Search code examples
rubymotion

How to manipulate the height of a ProMotion::Table::Cell


Im quite new to rubymotion and Promotion so sorry if the question is a stupid one :) I can't find any information how to manipulate a height of a cell after clicking on it. Somebody knows how to do this? Thanks a lot

class TimeOffsScreen < ProMotion::TableScreen

  def table_data
    TimeItem.all.map do |item|
      {
        title: item.name,
        action: :open_time_item,
        arguments: { item: item },
        editing_style: :delete,
        height: 90
      }
    end
  end

  def open_time_item(item)
    # Set height of this table cell
  end

end

Solution

  • There isn't a great way to do this currently. One way you can accomplish it is to access the data in your hash and then refresh the table data.

    By the way, I noticed a bug in your code. You need to provide an array of sections wrapping your cells.

    I've put an example of how to do this here, but you'll need to verify that it does work.

    def table_data
      @time_items ||= TimeItem.all
      [{
        cells: @time_items.map do |item|
          { 
            title: item.name,
            action: :open_time_item,
            arguments: { item: item },
            editing_style: :delete,
            height: item.height || 90
          }
        end
      }]
    end
    
    def open_time_item(item)
      item.height = 180 # .height can be a temporary attr_accessor with no persistence
      update_table_data
    end