在视图演示之前调用了多少次heightForRowAtIndexPath? Objective-C的

时间:2016-09-14 09:40:32

标签: ios objective-c xcode tableview

我正在开发一个iPad应用,我发现了这个问题,为什么当我提出tableView时,方法heightForRowAtIndexPath每次调用多次?< / p>

例如,如果我有十行,则该方法将被调用30次。

2 个答案:

答案 0 :(得分:2)

与调用一次的numberOfSectionsInTableView和每个部分调用一次的numberOfRowsInSection不同,每行调用heightForRowAtIndexPath。通常,组件需要找出需要创建的行数(这意味着需要分配多少行单元格),因此它会一直调用heightForRowAtIndexPath,直到总高度足以覆盖屏幕区域,再加上滚动的几行。

在您的情况下,屏幕看起来很高,足以容纳30行的桌子;因此,你可以拨打30 heightForRowAtIndexPath。这些调用之后将跟cellForRowAtIndexPath一样多的调用。

答案 1 :(得分:0)

每次显示表视图时,它会在委托上为每个行调用tableView:heightForRowAtIndexPath:。因此,如果你滚动你的tableview然后调用这个方法,当系统布局你的单元格时,也会调用这个方法。

Refer apple documentation

  

该方法允许委托指定具有不同高度的行。如果实现了此方法,则它返回的值将覆盖为给定行的UITableView的rowHeight属性指定的值。

     

使用会对性能产生影响   tableView:heightForRowAtIndexPath:而不是rowHeight属性。   每次显示表视图时,它都会调用   tableView:heightForRowAtIndexPath:在每个委托的委托上   行,这可能导致表的显着性能问题   具有大量行(大约1000或更多)的视图。

因此,当行数太多时,最好不要实现此方法!