删除删除按钮??在编辑模式下的表格行上

Con*_*ber 4 uitableview ios swift

我正在尝试学习 Swift,但我的项目中有一个问题让我抓狂。我在 parse.com 提供的 ViewController 中有一个工作数据列表。我设法实现了一个滑动功能,可以显示用于删除和编辑的按钮。那工作正常。现在我希望用户能够重新排序单元格。所以我成功地实现了一个按钮,将表格置于编辑模式。我的两个问题是:

  1. 当我进入编辑模式时,我只想能够重新排序单元格,因为编辑和删除是通过滑动完成的(通过“tableView(tableView:UITableView,editActionsForRowAtIndexPath indexPath:NSIndexPath)”。我怎样才能做到用户没有在编辑模式下看到用于删除和编辑的 2 个按钮并触摸自动提供的删除圆圈?

  2. 是否可以完全删除删除圈?使用“UITableViewCellEditingStyle.None”也会禁用滑动功能。

提前致谢!

Mar*_*ius 7

为了避免在左侧将 set UITableView isEditing 设置为 true 时出现的圆形红色删除按钮,并且在单击它时不执行任何操作,对我有用的最小值是(Swift 4,iOS 11)

// 避免单元格左侧的圆形红色删除按钮:

func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
    return false
}


func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return .none
}
Run Code Online (Sandbox Code Playgroud)

我也有这些功能,它们可能会相互作用:

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return savedTempTable.isEditing
}

// Including this function in the delegate enable left-swipe deleting
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
{
    if editingStyle == .delete {
        savedConversions.remove(at: indexPath.row)
    }
}


// Including this function enables reordering
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath,to destinationIndexPath: IndexPath)
{
    let elem = savedConversions.remove(at: sourceIndexPath.row)
    savedConversions.insert(elem, at: destinationIndexPath.row)
}
Run Code Online (Sandbox Code Playgroud)


flu*_*nic 1

尽管人们可以通过滑动删除行,但编辑模式下的删除按钮不应被删除。人们可能不知道滑动手势,并且通过删除删除按钮(他们在编辑模式下已经预料到的),应用程序变得更难以使用。

如果您确实想删除删除按钮,那么您必须实现委托方法tableView(_:editingStyleForRowAtIndexPath:).None无论屏幕处于编辑模式还是.Delete非编辑模式,您都可以返回。

要启用重新排序,您必须实现数据源方法tableView(_:canMoveRowAtIndexPath:)tableView(_:moveRowAtIndexPath:toIndexPath:)