为什么当行数很大时,UITableView需要更多时间来加载? 在viewDidLoad和第一个cellForRowAtIndexPath函数调用之间需要什么时间?
以下是 numberOfRows 返回 100,000 时的日志语句(请注意时间(5 秒延迟)):
2014-02-05 20:51:22.806 TableViewTest[3995:60b] View Did Load
2014-02-05 20:51:27.526 TableViewTest[3995:60b] Cell for row at indexpath.row: 0
以下是 numberOfRows 返回 10,000 时的日志语句(注意时间(1 秒延迟)):
2014-02-05 20:54:50.793 TableViewTest[4007:60b] View Did Load
2014-02-05 20:54:51.846 TableViewTest[4007:60b] Cell for row at indexpath.row: 0
如果您在表格视图中实现heightForRowAtIndexPath:
,那么iOS将检查每个单元格的高度,我认为绘制滚动条。因此,如果可能的话,非常快速地拨打电话是值得的。
如果您支持 iOS 7,请考虑实现tableView: estimatedHeightForRowAtIndexPath:
它可以返回一个常量(或者可能是非常快速的逻辑)来猜测高度。这将延迟调用heightForRowAtIndexPath:
直到实际查看单元格之前,并且应该会大大加快速度。