如果UITableView有很多项目,moveRow(at:to :)不起作用

时间:2017-03-08 08:04:13

标签: ios swift uitableview animation swift3

我正在尝试在选择行后在各个部分之间移动项目。 这是我用于将项目从第0部分移动到第1部分的代码:

tableSource[indexPath.section].tableItems.remove(at: indexPath.row)
tableSource[1].tableItems.insert(data, at: 0)
tableView.moveRow(at: indexPath, to: IndexPath(row: 0, section: 1))
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: {
    self.tableView.reloadRows(at: [IndexPath(row: 0, section: 1)], with: UITableViewRowAnimation.automatic)
 })

DispatchQueue用于在动画后更新行。

如果所有项目都适合屏幕或者第1部分可见,则效果很好。否则,我会像删除行并将其添加到另一个索引时那样得到行为。

1 个答案:

答案 0 :(得分:1)

这是因为如果单元格不可见,UITableView不知道动画的位置