Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用动画删除行后更新表视图的最佳方法?_Swift_Uitableview - Fatal编程技术网

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)
和动画