Эффект прыжка при удалении строки UITableView при прокрутке вручную - PullRequest
0 голосов
/ 06 февраля 2019

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

Проблема:

Я выполнил операцию delete row на tableview, а затем вызвал reloadData() на tableview.При перезагрузке, если я прокручиваю tableView немедленно, в tableview.

наблюдается скачкообразный эффект. Вот код для удаления tableview строки,

self.viewModel.data.remove(at: index)
self.tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .fade)
self.tableView.reloadData()

Я хочу знать, как решить эту проблему.Это та же самая функция, которую мы можем наблюдать, скрывая посты в Facebook / Instagram.

enter image description here

Ответы [ 2 ]

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

Поставьте в очередь перезагрузку в основном потоке, а также вам не нужно перезагружать всю таблицу, если вы не изменили много источников данных, просто перезагрузите раздел.

self.viewModel.data.remove(at: index)
self.tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .fade)
OperationQueue.main.addOperation {
    tableView.reloadSections(IndexSet(integer: 0), with:.automatic)
}
0 голосов
/ 06 февраля 2019

Вызов reloadData перезагружает весь табличный вид, который вам не нужен.Для анимации удаления одной строки используйте beginUpdates и endUpdates

self.tableView.beginUpdates()
self.viewModel.data.remove(at: index)
self.tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .fade)
self.tableView.endUpdates()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...