UITableView - удаление строк с анимацией - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь удалить строку из таблицы с помощью анимации, однако в большинстве случаев она застревает.1 из 15 попыток приведет к воспроизведению этой анимации.Вот как выглядит мое действие по удалению:

func contextualDeleteAction(forRowAtIndexPath indexPath: IndexPath) -> UIContextualAction {

    let action = UIContextualAction(style: .destructive,
                                    title: "Delete") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in

                                            Model().context.delete(notesArray[indexPath.row])
                                            notesArray.remove(at: indexPath.row)
                                            self.myTableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.bottom)
                                            Model().saveItems()                             

    }
    action.title = "Delete"

    return action
}

Вот как оно выглядит, когда застревает при смахивании.Stucked when swiping

При нажатии вместо кнопки удаления.

enter image description here

Я также пытался использовать tableView.beginUpdate () и tableView.endUpdate (), но не получили другого результата.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Проблема в том, что вы забыли свою основную обязанность в этом методе: вы должны вызвать обработчик завершения!

    Model().context.delete(notesArray[indexPath.row])
    notesArray.remove(at: indexPath.row)
    self.myTableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.bottom)
    Model().saveItems()
    completionHandler(true) // <-- look!
0 голосов
/ 13 октября 2018

В Swift 4 вы можете выполнить анимацию удаления точно так же, как анимация сообщений iPhone.

Используйте это:

tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...