Наличие некоторой странной ошибки анимации с использованием TrailingSwipeActionsConfigurationForRowAt для удаления ячеек - PullRequest
0 голосов
/ 28 февраля 2019

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

let deleteSubcatAction = UIContextualAction(style: .destructive, title: "Delete") { (action, view, handler) in
    print("Delete Subcategory Action Tapped")
    let subcategory = Global.budget.categories[indexPath.section].subcategories[indexPath.row]
    Global.budget.categories[indexPath.section].subcategories.remove(at: indexPath.row)
    tableView.deleteRows(at: [indexPath], with: .left) }
    
deleteSubcatAction.backgroundColor = .red
let rowConfig = UISwipeActionsConfiguration(actions: [deleteSubcatAction])
return rowConfig

Когда я перетаскиваю ячейку влево, я вижу ожидаемое действие удаления, а нажатие действия вызывает метод, как и должно быть.Однако ячейка не удаляется из таблицы.Вместо этого действия остаются заблокированными на месте, а остальное содержимое ячейки скользит назад вправо, как будто я отпустил палец, не нажимая действие.Затем, если я коснусь в другом месте моего приложения, действия сворачиваются вправо, и ячейка просто исчезает без какой-либо анимации удаления. Вот видео об ошибке, которую я записал.Что здесь происходит?

1 Ответ

0 голосов
/ 28 февраля 2019

Первое, что появляется, это то, что вы не вызываете обработчик завершения (в вашем случае, свойство handler) в конце вашего UIContextualAction закрытия.Например, handler(true).

Во-вторых, вы ничего не делаете, чтобы гарантировать, что действие должным образом анимировано в табличном представлении.Ненавязчивый способ сделать это (без перезагрузки всего табличного представления из источника данных) - использовать:

tableView.beginUpdates()
tableview.endUpdates()

См. Документацию API для получения дополнительной информации.

PS В идеале, ваш источник данных должен быть подключен к вашему табличному представлению таким образом, чтобы табличное представление реагировало на события, вызванные наблюдателями вашего источника данных, а не удаляло строки таблицы «вручную» в ответ на пользовательский интерфейс.действие.

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