我有UITableView
UITableViewCells
cellForRowAtIndexPath
,UILabels
方法填充heightForRowAtIndexPath
等。
在我将UILabels添加到单元格后,我想更改UITableViewCell的高度。
我怎样才能做到这一点?
我在cellForRowAtIndexPath
方法中阅读了很多关于这样做的内容,但是在heightForRowAtIndexPath
之前调用了这个方法,因此在调用UITableViewCell
时新的自定义高度是未知的。
那么如何在cellForRowAtIndexPath
方法中设置{{1}}的高度?
提前致谢,浪费了很多时间。
答案 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,那么如果单元格的高度不是你想要的那个呢?
你只需要避免无限循环:)