gpt4 book ai didi

iphone - cellForRowAtIndexPath : being called immediately while numberOfRowsInSection: is not called

转载 作者:行者123 更新时间:2023-12-03 19:43:43 31 4
gpt4 key购买 nike

在调用 UITableView 上的 reloadData 方法后,我曾多次遇到此问题,但我不明白为什么?

这是一个问题,因为如果更新 TableView 的数据,tableview将不必要地查询不存在的行上的单元格。它是不存在的,因为 numberOfRowsInSection: 在发生这种情况之前不会以某种方式被调用。

它是否受到reloadData方法调用方式的影响? (它在主线程上调用,而不是在其他地方调用)。

更新:

cellForRowAtIndexPath: 可以通过其他方式调用,例如查询 visibleCells。这可能不是 reloadData 的一部分。

最佳答案

Call this method to reload all the data that is used to construct the table, including cells, section headers and footers, index arrays, and so on. For efficiency, the table view redisplays only those rows that are visible. It adjusts offsets if the table shrinks as a result of the reload. The table view's delegate or data source calls this method when it wants the table view to completely reload its data. It should not be called in the methods that insert or delete rows, especially within an animation block implemented with calls to beginUpdates and endUpdates

根据苹果文档,reloadData 仅重新加载可见单元格。如果您没有正确使用单元格标识符,这可能会出现问题。

这仍然可能是线程问题。在调用 reloadData 之前检查您是否在主线程上运行,如果不是,请在主队列上运行dispatch_sync。

如果您已位于主队列中,则尝试在主队列上运行dispatch_anything,应用程序将退出。

关于iphone - cellForRowAtIndexPath : being called immediately while numberOfRowsInSection: is not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15239707/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com