UITableView:滑动 RowAction 取消选中的行
UITableView: swiping RowAction cancels the selected rows
我可以在已弃用的 UITableViewRowAction class 和 UISwipeActionsConfiguration class:[=10 中看到此行为=]
如果您将 allowsMultipleSelection 属性 设置为 true 并且假设您选择了 3 行:
当您开始滑动 table 中的任何行以执行 RowAction 时,先前选择的行 - 所有 3 行 - 都不会突出显示,并且 属性 indexPathsForSelectedRows 降为零。
- 这种行为有意义吗?
- 有没有'deselecting'回调(因为我显示的是选中的行数)
- 有哪些可能的解决方法来保留选定行的数组?
UITableView 在 table 中滑动一行时进入编辑模式。这是你的
'deselecting' callback
您可以在进入模式时备份所选行并在退出模式时恢复:
class ViewController: UITableViewController {
var indexPathsForSelectedRows: [IndexPath]?
override func setEditing(_ editing: Bool, animated: Bool) {
if editing {
indexPathsForSelectedRows = tableView.indexPathsForSelectedRows
} else {
indexPathsForSelectedRows?.forEach { tableView.selectRow(at: [=10=], animated: false, scrollPosition: .none) }
}
super.setEditing(editing, animated: animated)
}
}
另请注意,如果您在编辑期间 re-arrange/delete/insert 行,则需要相应地更新存储的 indexPathsForSelectedRows您恢复正确的索引路径。
我可以在已弃用的 UITableViewRowAction class 和 UISwipeActionsConfiguration class:[=10 中看到此行为=]
如果您将 allowsMultipleSelection 属性 设置为 true 并且假设您选择了 3 行:
当您开始滑动 table 中的任何行以执行 RowAction 时,先前选择的行 - 所有 3 行 - 都不会突出显示,并且 属性 indexPathsForSelectedRows 降为零。
- 这种行为有意义吗?
- 有没有'deselecting'回调(因为我显示的是选中的行数)
- 有哪些可能的解决方法来保留选定行的数组?
UITableView 在 table 中滑动一行时进入编辑模式。这是你的
'deselecting' callback
您可以在进入模式时备份所选行并在退出模式时恢复:
class ViewController: UITableViewController {
var indexPathsForSelectedRows: [IndexPath]?
override func setEditing(_ editing: Bool, animated: Bool) {
if editing {
indexPathsForSelectedRows = tableView.indexPathsForSelectedRows
} else {
indexPathsForSelectedRows?.forEach { tableView.selectRow(at: [=10=], animated: false, scrollPosition: .none) }
}
super.setEditing(editing, animated: animated)
}
}
另请注意,如果您在编辑期间 re-arrange/delete/insert 行,则需要相应地更新存储的 indexPathsForSelectedRows您恢复正确的索引路径。