1

我可以在弃用的UITableViewRowAction类和UISwipeActionsConfiguration类中看到这种行为:

如果您将allowMultipleSelection属性设置为true,并且假设您选择了3 行:

当您开始为 RowAction 滑动表中的任何行时,先前选择的行(所有 3 行)都不会突出显示,并且属性indexPathsForSelectedRows下降到零。

  • 这种行为有意义吗?
  • 是否有任何“取消选择”回调(因为我正在显示所选行数)
  • 保留所选行数组的可能解决方法是什么?
4

1 回答 1

2

UITableView在表格中滑动一行时进入编辑模式。这是你的

“取消选择”回调

您可以在进入模式时备份您选择的行并在退出时恢复:

class ViewController: UITableViewController {

    var indexPathsForSelectedRows: [IndexPath]?

    override func setEditing(_ editing: Bool, animated: Bool) {
        if editing {
            indexPathsForSelectedRows = tableView.indexPathsForSelectedRows
        } else {
            indexPathsForSelectedRows?.forEach { tableView.selectRow(at: $0, animated: false, scrollPosition: .none) }
        }
        super.setEditing(editing, animated: animated)
    }
}

另请注意,如果您在编辑期间重新排列/删除/插入行,则需要相应地更新存储的indexPathsForSelectedRows以便恢复正确的索引路径。

于 2019-07-30T20:06:19.817 回答