我对如何处理批量更新中表视图行的移动感到困惑。
我有一个tableView
在批量更新块中更新的:
tableView.performBatchUpdates {
//…
}
在块内,必须处理删除、插入、更新和移动。
苹果文档说
在批处理操作中,在插入之前处理删除。这意味着删除的索引是相对于批处理操作之前表视图状态的索引进行处理的,而插入的索引是相对于批处理操作中所有删除之后的状态索引进行处理的。
我假设移动和更新的索引与删除和插入完成后的状态有关,尽管没有明确说明。
就我而言,我必须在移动后配置一个表格视图单元格。但是有不同的情况需要考虑:
- 如果移动之前和之后移动的行可见,我可以使用 访问单元格
let cell = tableView.cellForRow(at: IndexPath)
并对其进行配置。但是要使用哪个索引路径:移动之前还是之后? - 如果移动的行仅在移动之前可见,则无需对其进行配置。
- 如果移动的行仅在移动后可见,则还没有可以配置的单元格。
当然,我可以存储已删除、插入和移动的行,直到批量更新完成,如果插入或移动的行可见,则检查完成块,如果是,则配置其单元格。
这是正确的做法吗?