表正在编辑时UITableViewCell行动作

时间:2018-01-20 09:54:49

标签: ios swift uitableview uitableviewrowaction

我有一个UITableView,我需要重新排序并允许通过在单元格上向左滑动来删除单元格以显示删除操作。是否有可能同时兼得?

对于我的表:

tableView.allowsSelectionDuringEditing = true
tableView.isEditing = true

对于数据源:

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

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

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    // I do nothing here
}

func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    // This is where I rearrange my data source array
}

代表:

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

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: .destructive, title: "Remove") { action, index in
        // delete row
    }
    delete.backgroundColor = UIColor.appRed

    return [delete]
}

所以我想拥有的是:

  • 重新排序控制,允许我移动单元格
  • 向左滑动以显示单元格操作

我需要这些可见并同时工作。可以这样做吗?

1 个答案:

答案 0 :(得分:1)

UITableView处于编辑模式时,

滑动以删除

如果要在编辑模式下隐藏左侧的删除按钮,则必须实现以下方法:

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

override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return tableView.isEditing ? .none : .delete
}

我认为这是你能得到的最接近的。