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

Amy*_*all 8 cocoa-touch uitableview ios

UITableView允许您使用beginUpdates和批量编辑操作endUpdates.

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

假设我有一张桌子:

A (currently index path 0,0)
B (0,1)
C (0,2)
D (0,3)
E (0,4)
F (0,5)
Run Code Online (Sandbox Code Playgroud)

我想把它变成:

A (0,0)
C (0,1)
D (0,2)
H (0,3)
E (0,4)
F (0,5)
Run Code Online (Sandbox Code Playgroud)

因此,我删除了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

Mik*_*ler 9

相关的Apple文档是在运营订购和索引路径下进行的.

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

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

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