Удалить строки из таблицы с помощью swift - PullRequest
0 голосов
/ 11 февраля 2020

Я создаю табличное представление для своего приложения, я хочу добавить опцию, которая может позволить пользователю удалить строку в табличном представлении. Я использую эту функцию. H1 - это строка моего массива, которую я поместил в таблицу. моя ошибка возникает, когда я пытаюсь удалить строку в шутку c editinstyle

  var h1:[String] = ["one","two","three"]


 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        h1.count
}
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell3", for: indexPath as IndexPath) as! TableView1

        cell.information.text = h1[indexPath.row]
}
  func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            print("Deleted")

            h1.remove(at: indexPath.row) //Remove element from your array
            print(h1)
            tableView.deleteRows(at: [indexPath], with: .fade)
        }
    }

enter image description here, когда я пытаюсь нажать, чтобы удалить ее, показать как это error 2020-02-11 20: 43: 35.803024 + 0200 TraniersApp [13314: 401189] *** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (2), должно быть равно числу строк, содержащихся в этом разделе до обновления (2), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено , 1 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 перемещено). '

Кто-нибудь знает, в чем проблема?

1 Ответ

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

Подозреваю, что это условие гонки, которое может быть разрешено путем выполнения h1.remove () и tableView.deleteRows () внутри транзакции (то есть между tableView.beginUpdates() и tableView.endUpdates()).

    tableView.beginUpdates()
    h1.remove(at: indexPath.row) //Remove element from your array
    tableView.deleteRows(at: [indexPath], with: .fade)
    tableView.endUpdates()

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