2

场景: 我有一个 UITableView 显示从网络资源加载的数据。与该资源的同步可能需要一段时间才能完成,并且结果是零碎加载的。网络通信通过 NSOperationQueue 在后台发生。结果通过通知传递,控制权被转移回主线程以插入新结果。发生这种情况时,用户能够对表中的数据执行操作。

问题: 如果用户在同步发生时对表中的某一行执行删除操作,那么在表视图动画删除时行数很可能会发生变化(因为动画会导致多次迭代通过事件循环,并调用新结果的通知处理程序)。这会导致内部不一致异常。

同步导致对表视图上的 reloadData 调用,因为新结果是分批加载的。更重要的是,它会导致行数发生变化。

我一直无法找到一种方法来知道表格正在制作动画(或在完成时收到通知),以便我可以延迟新结果的处理。这可能吗?

4

1 回答 1

0

在 beginUpdates/endUpdates 中包含所有表更改。根据文档,这些可以嵌套,因此您不应该遇到同时插入和删除的问题。

于 2013-01-02T20:55:06.713 回答