2013-10-16 28 views
0

对于rubymotion和Promotion,我很新,所以对不起,如果问题是一个愚蠢的问题:)我找不到任何信息如何操纵单元格的高度点击它后。有人知道如何做到这一点?非常感谢如何操作ProMotion :: Table :: Cell的高度

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 

回答

2

目前没有很好的方法来做到这一点。一种可以完成的方法是访问散列中的数据,然后刷新表数据。

顺便说一句,我注意到你的代码中有一个错误。您需要提供包装单元格的数组部分。

我已经举了一个如何在这里做的例子,但你需要验证它是否工作。

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 
+0

Thanks Jamon!这是工作。感谢您的错误!这个错误并没有出现在我的实际代码中,我为了这个例子对它进行了剥离。如果我可以提一个简单的问题,是否有可能通过动画使它更大?我试图在open_time_item方法中获取TableCell实例。我想我不能使用促销这个?非常感谢! –

+0

没问题,很高兴我能帮到你。动画的问题实际上并不是ProMotion特有的。你需要检测你的UITableViewCell,然后从那里运行你的动画。一种可能的方法是使用[RMQ](http://infinitered.com/rmq/)将事件绑定到您的单元格并对它们进行动画处理。 –