0

我需要通过从滑动操作“移动”中单击其中一个单元格来打开 tableView 编辑模式:

滑动操作代码:

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let move = UIContextualAction(style: .normal, title: "Переместить") { (action, view, completionHandler) in
        self.turnEditing()
        completionHandler(true)
    }
    move.backgroundColor = UIColor(named: "CalmBlueColor")
    
    let configuration = UISwipeActionsConfiguration(actions: [move])
    return configuration
}

turnEditing() 函数:

   func turnEditing() {
       if tableView.isEditing {
           tableView.isEditing = false
       } else {
           tableView.isEditing = true
       }
    }

TableView 代表:

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

override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    
}

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

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

当我按下滑动动作时,它只是关闭,没有进入编辑模式......这是GIF

是否可以从滑动操作或仅从 barButtonItem + IBAction 进入编辑模式?

4

1 回答 1

1

添加一些延迟

DispatchQueue.main.asyncAfter(deadline: .now() + 0.75) {
  self.turnEditing()
}

顺便说一句,你可以替换这个

if tableView.isEditing {
  tableView.isEditing = false
} else {
  tableView.isEditing = true
}

tableView.isEditing.toggle()
于 2022-02-13T15:30:02.127 回答