Swift 使用动画删除行后更新表视图的最佳方法?
我有一个在标签中显示单元格索引的表视图,因此表视图可能类似于:Swift 使用动画删除行后更新表视图的最佳方法?,swift,uitableview,Swift,Uitableview,我有一个在标签中显示单元格索引的表视图,因此表视图可能类似于: 0 1 2 3 4 我想让用户使用以下方法删除带有动画的单元格: tbl.deleteRows(at: [IndexPath(row: idx, section: 0)], with: .automatic) 但问题是,其他单元格在动画之后不会更新其索引标签。因此,例如,如果我删除了索引1,那么在删除动画完成后,该表最终看起来像: 0 2 3 4 既然deleteRows没有完成回调,那么在delete动画之后重新加载表视图的
0
1
2
3
4
我想让用户使用以下方法删除带有动画的单元格:
tbl.deleteRows(at: [IndexPath(row: idx, section: 0)], with: .automatic)
但问题是,其他单元格在动画之后不会更新其索引标签。因此,例如,如果我删除了索引1,那么在删除动画完成后,该表最终看起来像:
0
2
3
4
既然deleteRows没有完成回调,那么在delete动画之后重新加载表视图的最佳方法是什么
我对调用tbl.reloadData()
代替tbl.deleteRows(…)
不感兴趣,因为我对删除动画感兴趣
谢谢您可以使用
UITableView
的性能更新
,并在完成后更新其他行:
tbl.performbatchUpdate({
self.tbl.deleteRows(位于:[indepath(行:idx,节:0)],带:。自动)
},完成:{(完成)在
让indexPathsToUpdate=(idx…self.tbl.numberOfRows(第0节)).map{IndexPath(第0行,第0节)}
self.tbl.reloadRows(位于:indexPathsToUpdate,带:。无)
})
或者也可以使用beginUpdates
和endUpdates
执行这些操作,动画将同时发生:
let indexPathsToUpdate=(idx+1…tbl.numberOfRows(第0节)).map{IndexPath(第0行,第0节)}
tbl.开始更新()
tbl.deleteRows(位于:[indepath(行:tbl,节:0)],带:。自动)
tbl.reloadSections(索引集(整数:0…0),带:。无)
tbl.endUpdates()
请注意,我使用了reloadRows(在:indexPathsToUpdate,带:.none)
和动画