Попытайтесь удалить строку 2 из раздела 1, который содержит только 2 строки перед обновлением - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь удалить строку в UITableView с помощью действия смахивания, но продолжаю получать следующую ошибку:

'NSInternalInconsistencyException', причина: 'попытка удалить строку 2 из раздела 1, который перед обновлением содержит только 2 строки '

Представление таблицы состоит из нескольких разделов.

Код ниже:

override func numberOfSections(in tableView: UITableView) -> Int {
   return favouriteSubjectTitlesArray.count
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {    
   return favouriteCaseIDsBySubjectArray[section].count
}

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
 if orientation == .left {
    //Unfavourite the case
    let unfavouriteAction = SwipeAction(style: .destructive, title: "Unfavourite") { action, indexPath in

    self.favouriteCaseIDsBySubjectArray[self.selectedSubjectID].remove(at: indexPath.row)
    DispatchQueue.main.async {
       self.tableView.deleteRows(at: [indexPath], with: .automatic)
      }
    }
return [unfavouriteAction]
  }
return nil
}

Есть идеи, где я ошибаюсь?

1 Ответ

0 голосов
/ 18 февраля 2020

В конце концов нашел решение: после обновления источника данных структурой я обнаружил, что вам нужно добавить action.fulfill(with: .delete) для SwipeCellKit.

Рабочий код поэтому:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
 if orientation == .left {
    //Unfavourite the case
    let unfavouriteAction = SwipeAction(style: .destructive, title: "Unfavourite") { action, indexPath in

        self.favouriteCases.remove(at: indexPath)

        self.tableView.beginUpdates()
        self.tableView.deleteRows(at: [indexPath], with: .right)
        action.fulfill(with: .delete)
        self.tableView.endUpdates()

   return [unfavouriteAction]
  }
return nil
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...