以下方法调用UITableView的顺序是什么?
numberOfSectionsInTableView
numberOfRowsInSection
cellForRowAtIndexPath
heightForRowAtIndexPath
didChangeObject
(NSFetchedResultsController
)请包含我可能遗漏的任何其他相关钩子方法。
答案 0 :(得分:12)
关于调用这些方法的顺序,我会很谨慎。这些方法具有非常具体和完整的用途。即使这些方法现在以某种顺序被调用,但这并不意味着它们将始终以该顺序被调用,因此在代码中假设它们被调用的顺序是危险的。例如,不会为所有行调用cellForRowAtIndexPath。它仅被调用可见行,然后在用户滚动到它们时调用其他行。旧行在离开屏幕时也会被破坏,如果用户向上滚动,它将再次请求单元格。
最重要的是,由于Apple的文档中未指定订单,因此您无法安全地假设它们将始终以相同的顺序调用,并且在您的实现中做出这样的假设通常不是一个好主意。
答案 1 :(得分:2)
我最终使用NSLog
语句来解决这个问题,但遗憾的是没有记录它。因为,我意识到调用这些函数的顺序并不重要。
阅读Batch Insertion, Deletion, and Reloading of Rows and Sections in the Table View Programming Guide for iOS我学会了在表视图中插入行之前更新数据。