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)
我想把它变成:
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)。
那么,在我的开始/结束更新调用之间,哪些会起作用?
答案 0 :(得分:9)
相关的Apple文档位于Ordering of Operations and Index Paths。
动画块中的删除和重新加载操作指定应删除或重新加载原始表中的哪些行和部分; 插入指定应将哪些行和部分添加到结果表。用于标识节和行的索引路径遵循此模型。
因此表视图将首先执行任何删除或更新操作,其索引路径引用原始表内容中的索引路径。然后执行插入,并且删除发生后,这些索引路径引用索引路径。
所以理论上你的数字'2'选项应该是你想要的。