UITableView更新beginUpdates和endUpdates调用之间的更新被批处理,并且所有操作都在同一时间执行.Apple的文档特定于执行顺序insert和delete执行操作:
动画块中的删除和重新加载操作指定应删除或重新加载原始表中的哪些行和部分; insertions指定应将哪些行和部分添加到结果表中.用于标识节和行的索引路径遵循此模型.另一方面,在可变数组中插入或移除项目可能会影响用于连续插入或移除操作的数组索引; 例如,如果在某个索引处插入项,则数组中所有后续项的索引都会递增.
值得注意的是:
可以嵌套对beginUpdates和endUpdates的调用; 所有索引都被视为只有外部更新块.
[ 强调我的 ]
所以:考虑在第一次传递中发生的删除,然后使用删除后产生的新索引路径,然后在此之后发生任何插入.
那很有用.但是,我没有找到任何关于行(和部分)移动发生的位置,应该使用哪种索引以及这是否会影响其他步骤的文档.谁知道?
移动表行时,指定两个索引:
indexPath在原始表中从哪里取这一行newIndexPath在结果表中将出现此行
func moveRow(在indexPath:IndexPath,到newIndexPath:IndexPath)
单批可能存在冲突操作,导致应用程序崩溃:
无法移动要插入的行,因为原始表中不存在该行.
默认情况下,移动的行不会从数据源重新加载.
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |