3

在调用UITableViewreloadData上的方法后,我遇到过几次这个问题,但我还没弄清楚为什么?

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

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

更新:

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

4

1 回答 1

3

调用此方法可重新加载用于构建表格的所有数据,包括单元格、节页眉和页脚、索引数组等。为了提高效率,表格视图只重新显示那些可见的行。如果表因重新加载而缩小,它会调整偏移量。表视图的委托或数据源在它希望表视图完全重新加载其数据时调用此方法。不应在插入或删除行的方法中调用它,尤其是在通过调用 beginUpdates 和 endUpdates 实现的动画块中

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

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

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

于 2013-03-06T05:55:40.617 回答