在UITableView中,批量行插入/删除的顺序是什么?

时间:2011-08-03 13:30:16

标签: ios cocoa-touch uitableview

UITableView允许您使用beginUpdatesendUpdates批量编辑操作。

我的问题是:我是否需要先知道它是删除还是插入?或者我可以通过beginUpdates之前的索引路径引用所有内容,它会神奇地起作用吗?

假设我有一张桌子:

A (currently index path 0,0)
B (0,1)
C (0,2)
D (0,3)
E (0,4)
F (0,5)

我想把它变成:

A (0,0)
C (0,1)
D (0,2)
H (0,3)
E (0,4)
F (0,5)

因此,我删除了B(在0,1处)并插入了H(在D之后插入 - 在删除前的0,4或之后的0,3)。

那么,在我的开始/结束更新调用之间,哪些会起作用?

  1. deleteRowsAtIndexPaths:0,1,后跟insertRowsAtIndexPaths: 0,4
  2. deleteRowsAtIndexPaths:0,1,后跟 insertRowsAtIndexPaths:0,3
  3. insertRowsAtIndexPaths:0,4,然后是deleteRowsAtIndexPaths:0,1
  4. insertRowsAtIndexPaths:0,3,后跟deleteRowsAtIndexPaths:0,1

1 个答案:

答案 0 :(得分:9)

相关的Apple文档位于Ordering of Operations and Index Paths

  动画块中的

删除和重新加载操作指定应删除或重​​新加载原始表中的哪些行和部分; 插入指定应将哪些行和部分添加到结果表。用于标识节和行的索引路径遵循此模型。

因此表视图将首先执行任何删除或更新操作,其索引路径引用原始表内容中的索引路径。然后执行插入,并且删除发生后,这些索引路径引用索引路径

所以理论上你的数字'2'选项应该是你想要的。