Как правильно удалить строку из tableView? - PullRequest
0 голосов
/ 27 июня 2018

В Xcode 9 у меня есть tableView со списком данных, которые извлекаются из CoreData. Добавление, редактирование и сохранение данных работает правильно, но когда я пытаюсь удалить данные, я сталкиваюсь с дилеммой, которая эстетична с одной стороны, и приводит к сбою приложения на другой.

Если я использую следующий код, он удаляет данные из CoreData и из таблицы, но без параметра .fade. Он просто исчезает из tableView.

  override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
         context.delete(tasks[indexPath.row])
         tasks.remove(at: indexPath.row)
         saveTasks()
  }

Если я использую следующую опцию, приложение вылетает.

  override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
         context.delete(tasks[indexPath.row])
         tableView.deleteRows(at: [indexPath], with: .fade)
         saveTasks()
  }

Как применить параметр .fade для удаления по адресу:?

1 Ответ

0 голосов
/ 27 июня 2018

Вам нужно объединить эти два решения:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    context.delete(tasks[indexPath.row])
    tasks.remove(at: indexPath.row)
    tableView.deleteRows(at: [indexPath], with: .fade)
    saveTasks()
}

По сути, вам нужно как обновить данные (tasks), так и tableView перезагрузить.

...