Кнопка удаления в режиме редактирования tableView (знак минус) не отвечает на нажатие - как это исправить? - PullRequest
0 голосов
/ 15 февраля 2019

Когда мой tableView переходит в режим редактирования, с каждой стороны моей ячейки появляется значок: значок справа является значком по умолчанию для изменения порядка ячеек, а значок слева - значком по умолчанию для удаления ячейки,Я могу легко взаимодействовать с иконкой перестановки без проблем, однако нажатие на иконку удаления не дает ответа.Это работает только тогда, когда я делаю неуклюжее движение вправо, а затем влево.Ниже я поместил, как мне кажется, весь соответствующий код в мою ситуацию.

Некоторая справочная информация: у меня есть три жеста касания в представлении (одно касание, двойное касание и долгое нажатие).Я пытался отключить их с условиями, когда режим редактирования включен.Я даже пытался удалить сенсорные жесты заранее, но это не помогло.Я подумал, что это может быть проблема с автоматической разметкой, которая не регистрирует область для кнопки удаления, но кнопка переупорядочения работает, не так ли?И ведущие и конечные константы моей ячейки +10 к виду.Кроме того, isEditing контролируется UIButton.Наконец, у меня есть делегат tableView, установленный на себя, и сенсорное взаимодействие, когда редактирование включено.

Любая помощь будет оценена.Спасибо!

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 голосов
/ 15 февраля 2019

Привет, если вы используете UITableViewController и используете isEditing режим дефолта iOS, вам нужно переопределить setEditing Mode и изменить кнопку Edit. Нажмите.

  • iOS self.navigationItem.rightBarButtonItem = self.editButtonItem в editButtonItem по умолчанию UIViewControllerметод.editButtonItem кнопка Переопределение действия.

Swift Пример:

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    tableView.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...