heightForRowAtIndexPath调用了三次

时间:2015-03-10 19:19:41

标签: objective-c uitableview ios8

我在tableview中创建了一个包含一个部分的静态行。记录 heightForRowAtIndexPath 方法的调用后,我发现单行调用了三次。 请澄清这种行为。

3 个答案:

答案 0 :(得分:0)

您可以在此函数中放置一个断点,并从层次结构中查看它的调用位置。

enter image description here

答案 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需要重绘自己。

编辑: 不确定为什么我的回答被低估了,如果你想要更详细的答案,请添加代码或更明确的评论。

相关问题