在编辑模式下使用自定义滑动操作时,如何防止单元缩进?

时间:2019-07-03 15:27:44

标签: ios tableview

我正在尝试实现两个单元,一个可以通过滑动删除,而另一个不能删除,但是具有另一种滑动操作。

这是现在的样子:

swiping

我不希望单击“编辑”时缩进中间单元格。 没有任何自定义代码,所有单元格都会显示该红色圆圈并显示一个删除按钮,但是我添加了几行代码来防止这种情况。

此代码会将没有前导或尾随滑动动作的所有单元格设置为不可编辑,从而解释了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 ,甚至会显示默认的删除-划动。我不希望删除该行!

如何在保持中间单元格滑动能力的同时防止中间单元格缩进?

1 个答案:

答案 0 :(得分:2)

此方法似乎有效! tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614873-tableview?language=objc