我正在尝试实现两个单元格,一个单元格可以通过滑动删除,而另一个单元格则不能删除,但是具有另一种滑动操作。
这是现在的样子:
我不希望单击“编辑”时缩进中间单元格。没有任何自定义代码,所有单元格都会显示该红色圆圈并显示一个删除按钮,但是我添加了几行代码来防止这种情况。
这段代码会将没有前导或尾随滑动动作的所有单元格设置为不可编辑,从而解释了gif底部的单元格。我必须对此包括最主要的滑动动作,因为如果单元格不是editable
,那么我根本就不会滑动。
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
let vm = sections[indexPath.section].viewModels[indexPath.row]
return vm.leadingSwipeActions != nil || vm.trailingSwipeActions != nil
}
以下代码将阻止中间单元格显示红色圆圈。
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
return sections[indexPath.section].viewModels[indexPath.row].trailingSwipeActions == nil ? .none : .delete
}
如果我不通过.none
前导动作进入该单元格,那么它将显示红色圆圈,甚至会显示默认的删除滑动。我不希望删除该行!
我如何防止中间单元缩进,同时仍保持滑动的能力?
此方法似乎有效!tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool
https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614873-tableview?language=objc