tableView编辑模式删除按钮(减号)对点击无响应-我该如何解决?

时间:2019-02-15 04:05:50

标签: ios swift uitableview

当tableView进入编辑模式时,单元格的每一侧都有一个图标:右侧的图标是用于重新排列单元格顺序的默认图标,而左侧的图标是用于删除单元格的默认图标。我可以轻松地与重新排列图标进行交互,没有任何问题,但是,点击删除图标不会产生任何响应。仅当我在尴尬的向右滑动然后向左滑动时才有效。在下面,我放置了我认为与情况有关的所有代码。

一些背景信息:我在视图中有三个触摸手势(单击,双击和长按)。我尝试使用启用编辑模式的条件来禁用它们。我什至尝试过事先删除触摸手势,但这无济于事。我认为这可能是自动布局问题,没有为删除按钮注册区域,但是重新排列按钮起作用了,所以不是吗?我的单元格的前导常数和尾随常数均为该视图的+10。此外,isEditing由UIButton控制。最后,我将tableView委托设置为self,并在启用编辑时触摸交互。

任何帮助将不胜感激。谢谢!

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

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

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == .delete) {
        countBeforeDeletingCell =  dataSource.data.count
        dataSource.data.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .none)
    }
}

override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    let movedObject = dataSource.data[sourceIndexPath.row]
    dataSource.data.remove(at: sourceIndexPath.row)
    dataSource.data.insert(movedObject, at: destinationIndexPath.row)
    tableView.reloadData()
}

1 个答案:

答案 0 :(得分:0)

嘿,如果您使用过UITableViewController并使用isEditing iOS默认模式,则必须覆盖setEditing模式和Change Edit按钮。

    self.navigationItem.rightBarButtonItem = self.editButtonItem中的
  • iOS editButtonItem是默认的UIViewController方法。 editButtonItem按钮操作优先。

Swift示例:

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    tableView.reloadData()
}