我正在尝试实现两个单元,一个可以通过滑动删除,而另一个不能删除,但是具有另一种滑动操作。
这是现在的样子:
我不希望单击“编辑”时缩进中间单元格。 没有任何自定义代码,所有单元格都会显示该红色圆圈并显示一个删除按钮,但是我添加了几行代码来防止这种情况。
此代码会将没有前导或尾随滑动动作的所有单元格设置为不可编辑,从而解释了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
,那么它将显示红色圆圈 AND ,甚至会显示默认的删除-划动。我不希望删除该行!
如何在保持中间单元格滑动能力的同时防止中间单元格缩进?
答案 0 :(得分:2)
此方法似乎有效! tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool
https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614873-tableview?language=objc