我在tableview中创建了一个包含一个部分的静态行。记录 heightForRowAtIndexPath 方法的调用后,我发现单行调用了三次。 请澄清这种行为。
答案 0 :(得分:0)
您可以在此函数中放置一个断点,并从层次结构中查看它的调用位置。
答案 1 :(得分:0)
每行调用heightForRowAtIndexPath多次。在我的情况下,在显示tableView之前它被调用了3次900行(我想用于计算整个tableview的内容大小)。对我来说,解决方案是实现- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{}
,但仍然会多次调用heightForRowAtIndexPath,但仅针对显示的单元格。
答案 2 :(得分:-1)
为每个单元格调用heightForRowAtIndexPath。因此,如果您有三个单元格,它将被调用三次。
来自apple docs(TableView Docs):
每次显示表视图时,它会在每个行的委托上调用tableView:heightForRowAtIndexPath:这会导致表视图具有大量行(大约1000或更多)的显着性能问题< / p>
此外,当您开始滚动tableview时,您会看到它被调用,因为当新单元格出现并且旧单元格消失时,tableview需要重绘自己。
编辑: 不确定为什么我的回答被低估了,如果你想要更详细的答案,请添加代码或更明确的评论。