批量插入&删除+重新加载旧单元格=异常

时间:2010-07-06 20:09:13

标签: iphone cocoa-touch uitableview uikit

所以我有一个UITableView,我在其中进行批量插入/删除/重新加载。每隔一段时间,列表数据就会发生变化,因此我批量更新列表中的差异。我基本上是插入新行,删除不再存在的行,并重新加载旧数据和新数据中存在的行。例如:

之前,列表数据如下所示:
0:苹果
1:香蕉
2:胡萝卜

之后,列表数据如下所示:
0:香蕉
1:胡萝卜
2:狗
3:大象

这导致删除第0行,重新加载第1行和第2行,并在第2行和第3行插入。我调用方法的顺序也是这样:删除,然后重新加载,然后插入行。

然而,由于我在第2行(重新加载和插入)上执行两个不同的动画,因此会导致抛出异常。这是一个排序问题,还是我的indexPaths不正确?注意:我需要重新加载旧单元格,因为该行的数据可能已更改,但不应通过插入/删除来表示。

编辑:奇怪的是,此错误仅发生在早于iOS4的iOS版本中。

1 个答案:

答案 0 :(得分:1)

我会说删除0,插入3和4.不需要重新加载。您发送更新的顺序无关紧要。在告知更新之前,请确保您的模型反映了更改。使用-beginUpdates包装调用:end -endUpdates:。

以下是批量更新的链接,请参阅清单7-8: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html#//apple_ref/doc/uid/TP40007451-CH10-SW16

WWDC视频提示也很好。您想要留意会话128 - 掌握表格视图。