按以下顺序调用UITableView?UITableView钩子方法调用的顺序是什么?
numberOfSectionsInTableView
numberOfRowsInSection
cellForRowAtIndexPath
heightForRowAtIndexPath
didChangeObject
(NSFetchedResultsController
)
请包括我可能已经离开了其他相关挂钩的方法。
按以下顺序调用UITableView?UITableView钩子方法调用的顺序是什么?
numberOfSectionsInTableView
numberOfRowsInSection
cellForRowAtIndexPath
heightForRowAtIndexPath
didChangeObject
(NSFetchedResultsController
)请包括我可能已经离开了其他相关挂钩的方法。
我会担心的是担心这些方法被调用的顺序。这些方法具有非常具体和完整的目的。即使这些方法现在是按某个顺序调用的,但这并不意味着它们将始终按照该顺序调用,因此在代码中对它们调用的顺序进行假设是很危险的。例如,不为所有行调用cellForRowAtIndexPath。它仅被称为可见行,然后在用户滚动到它们时调用其他行。旧行在离开屏幕时也会被销毁,并且如果用户向后滚动,它会再次请求单元格。底线,由于Apple的文档中没有指定订单,所以您不能安全地假定它们将始终以相同的顺序被调用,并且在您的实现中做出这样的假设通常不是一个好主意。
我最终确实使用了NSLog
语句来解释这一点,但不幸的是没有记录它。因为,我意识到这些函数被调用的顺序并不重要。
关于Batch Insertion, Deletion, and Reloading of Rows and Sections in the Table View Programming Guide for iOS的阅读了解在表格视图中插入行之前,我学会了更新数据。