ios - 删除动画期间行数更改时 UITableView 中的内部不一致

标签 ios iphone uitableview cocoa-touch uikit

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

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

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

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

最佳答案

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

关于ios - 删除动画期间行数更改时 UITableView 中的内部不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128928/

相关文章:

javascript - watchPosition() 与 getCurrentPosition() 与 setTimeout

ios - 在 ios 应用程序中下载带有 .m3u8 url 的视频

ios - Monotouch/Xamarin 更改 iPad 应用程序的表格行高

android - 无需基站即可在 GSM 设备之间传输数据

ios - 为 NSNotificationCenter 添加乘法观察者

ios - sysctlbyname错误函数 'sysctlbyname'的隐式声明在C99中无效

ios - 删除/编辑核心数据对象时遵循逻辑和关系

iphone - 如何在iPhone中动态更改UITextView中文本的字体大小

arrays - 变量行的索引路径

ios - 自定义表格单元格不会滚动