在cellForRowAtIndexPath中更改UITableViewCell高度

时间:2012-02-10 11:02:14

标签: iphone objective-c ios

我有UITableView UITableViewCells cellForRowAtIndexPathUILabels方法填充heightForRowAtIndexPath等。 在我将UILabels添加到单元格后,我想更改UITableViewCell的高度。 我怎样才能做到这一点? 我在cellForRowAtIndexPath方法中阅读了很多关于这样做的内容,但是在heightForRowAtIndexPath之前调用了这个方法,因此在调用UITableViewCell时新的自定义高度是未知的。

那么如何在cellForRowAtIndexPath方法中设置{{1}}的高度?

提前致谢,浪费了很多时间。

3 个答案:

答案 0 :(得分:7)

您无法在cellForRowAtIndexPath中更改高度。 tableView在显示整个tableView之前必须知道高度。这就是为什么在tableView中为每个单元格调用tableView:heightForRowAtIndexPath:的原因 例如,这需要计算容纳单元格的scrollView的大小。

但是由于单元格的创建遵循由您创建的特定算法,因此您应该能够在调用tableView:cellForRowAtIndexPath:之前确定每个单元格的高度。

使用确定cellForRowAtIndexPath中单元格高度的相同代码部分:并将它们放入heightForRowAtIndexPath中:
优化对于heightForRowAtIndexPath很重要,因为它是为每个单元调用的。因此,请确保您只进行计算高度所需的最少量工作。

答案 1 :(得分:2)

我可以更改UITableViewCell的contentView,效果很好:)如果我在cellForRowAtIndexPath函数中更改了这个高度并在之后调用[tableView beginUpdates],那么它就会改变。

答案 2 :(得分:-1)

如果在cellForRowAtIndexPath中强制额外调用heightForRowAtIndexPath,那么如果单元格的高度不是你想要的那个呢?

你只需要避免无限循环:)