heightForRowAtIndexPath:在显示单元格之前执行了吗?

时间:2012-09-04 11:29:49

标签: iphone ios cocoa-touch uitableview

例如,tableView中有100行,在显示第100行之前已经执行了heightForRowAtIndexPath:

为什么呢?为了计算tableView的contentSize

谢谢!

1 个答案:

答案 0 :(得分:3)

来自Apple's documentation

  

每次显示表视图时,它会在每个行的委托上调用tableView:heightForRowAtIndexPath:

是的,在显示单元格之前调用它。如果你考虑一下,如果表格反过来做,它会创建一个标准高度的单元格,将内容放入其中,获得真正的高度,并调整单元格的大小。那不太好。

这可能会导致性能问题,因此只有在具有不同高度的单元格时才应使用它:

  

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

     

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

否则,如果所有单元格的高度相同,请使用rowHeight属性,不要实现tableView:heightForRowAtIndexPath:

相关问题