Ios 如何重新触发UITableView canMoveRowAt

Ios 如何重新触发UITableView canMoveRowAt,ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用canMoveRowAt()和moveRowAt()在我的行上显示拖动控制柄。在canMoveRowAt中,我根据行的一些数据测试一个条件: 。。。获取对行数据的引用… 返回rowData.myCondition() 当表格第一次进入编辑模式时,这种方法可以很好地工作。但是,在编辑模式下,行中的数据可以更改(尽管仍然是同一行)。我想重新触发canMoveRowAt以重新评估该条件,并可能更改是否为该行显示拖动控制柄 到目前为止,我只能通过结束并重新启动编辑模式来做到这一点。当我这样做时

我正在使用canMoveRowAt()和moveRowAt()在我的行上显示拖动控制柄。在canMoveRowAt中,我根据行的一些数据测试一个条件:

。。。获取对行数据的引用…

返回rowData.myCondition()

当表格第一次进入编辑模式时,这种方法可以很好地工作。但是,在编辑模式下,行中的数据可以更改(尽管仍然是同一行)。我想重新触发canMoveRowAt以重新评估该条件,并可能更改是否为该行显示拖动控制柄

到目前为止,我只能通过结束并重新启动编辑模式来做到这一点。当我这样做时,它会清除表中的选择,因此我必须保存并重新应用它们。这看起来有点像黑客


有没有更优雅的方法来重新触发canMoveRowAt以避免这种情况?

好的,最后我只是选择了重新加载行(在:),保存并恢复围绕以下内容的选择:

let savedSelections = vList.indexPathsForSelectedRows ?? []
vList.reloadRows(at: [dragHandleRowIndexPath], with: .automatic)
for indexPath in savedSelections {
    vList.selectRow(at: indexPath, animated: false, scrollPosition: .none)
}

更改数据时是否调用
reloadRows(at:)
?@Paulw11不幸的是,这也会重置UITableView中的选择。