我正在开发一个iPad
应用,我发现了这个问题,为什么当我提出tableView
时,方法heightForRowAtIndexPath
每次调用多次?< / p>
例如,如果我有十行,则该方法将被调用30次。
答案 0 :(得分:2)
与调用一次的numberOfSectionsInTableView
和每个部分调用一次的numberOfRowsInSection
不同,每行调用heightForRowAtIndexPath
。通常,组件需要找出需要创建的行数(这意味着需要分配多少行单元格),因此它会一直调用heightForRowAtIndexPath
,直到总高度足以覆盖屏幕区域,再加上滚动的几行。
在您的情况下,屏幕看起来很高,足以容纳30行的桌子;因此,你可以拨打30 heightForRowAtIndexPath
。这些调用之后将跟cellForRowAtIndexPath
一样多的调用。
答案 1 :(得分:0)
每次显示表视图时,它会在委托上为每个行调用tableView:heightForRowAtIndexPath:
。因此,如果你滚动你的tableview然后调用这个方法,当系统布局你的单元格时,也会调用这个方法。
该方法允许委托指定具有不同高度的行。如果实现了此方法,则它返回的值将覆盖为给定行的UITableView的rowHeight属性指定的值。
使用会对性能产生影响 tableView:heightForRowAtIndexPath:而不是rowHeight属性。 每次显示表视图时,它都会调用 tableView:heightForRowAtIndexPath:在每个委托的委托上 行,这可能导致表的显着性能问题 具有大量行(大约1000或更多)的视图。
因此,当行数太多时,最好不要实现此方法!