Ios UITableView:滑动行操作取消选定行
我可以在不推荐的UITableViewRowAction类和UISwipeActionsConfiguration类中看到这种行为: 如果将allowsMultipleSelection属性设置为true,并且可以说,您选择了3行: 当您开始为RowAction滑动表中的任何行时,先前选择的行(全部3行)将变为不高亮显示,并且属性IndExpathForSelectedRows将变为零Ios UITableView:滑动行操作取消选定行,ios,uitableview,uikit,uitableviewrowaction,uiswipeactionsconfiguration,Ios,Uitableview,Uikit,Uitableviewrowaction,Uiswipeactionsconfiguration,我可以在不推荐的UITableViewRowAction类和UISwipeActionsConfiguration类中看到这种行为: 如果将allowsMultipleSelection属性设置为true,并且可以说,您选择了3行: 当您开始为RowAction滑动表中的任何行时,先前选择的行(全部3行)将变为不高亮显示,并且属性IndExpathForSelectedRows将变为零 这种行为有意义吗 是否存在任何“取消选择”回调(因为我正在显示所选行数) 保留选定行的数组可能的解决方法是什
- 这种行为有意义吗
- 是否存在任何“取消选择”回调(因为我正在显示所选行数)
- 保留选定行的数组可能的解决方法是什么
类ViewController:UITableViewController{
var indexPathsForSelectedRows:[IndexPath]?
覆盖函数集编辑(uediting:Bool,动画:Bool){
如果编辑{
indexPathsForSelectedRows=tableView.indexPathsForSelectedRows
}否则{
indexPathsForSelectedRows?.forEach{tableView.selectRow(at:$0,动画:false,scrollPosition:.none)}
}
super.setEditing(编辑,动画:动画)
}
}
另外请注意,如果在编辑过程中重新排列/删除/插入行,则需要相应地更新存储的索引路径ForSelectedRows,以便恢复正确的索引路径。我非常确定您必须将super.setEditing(editing,animated)添加到被重写的函数中,但不幸的是,也没有重写func setEditing当UITableView进入/离开编辑模式时,调用(:,:)或override var isEditing{didSet{}}:(因此此解决方案似乎不正确)是否设置了UITableView委托?方法setEditing()不是委托协议的一部分,您为什么要问?如果您将UITableViewController子类化,那么将重写setEditing(顺便说一下,调用super.setediting()可以清除tableView.indexPathsForSelectedRows)应该可以工作。否则,您可以在UITableViewDelegate中适当地实现willBeginEditingRowAt和didEndEditingRowAt。