Как обновить UITableView асинхронно? - PullRequest
0 голосов
/ 23 мая 2018

Если массив, который является источником данных для UITableView, должен обновляться асинхронно, например, его члены удаляются и добавляются к данным, постоянно получаемым по сети, то как мы можем обновить UITableView и вставить и удалить соответствующиестроки?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Я использую основную очередь для ее обновления, поэтому при вызове асинхронной функции из сетевого события она будет перенаправлена ​​в основной поток

func theFuncToBeCalledBySyncEvent(addThisCell cell: UITableViewCell){
   DispatchQueue.main.async {
       theTable.beginUpdates()
       theSourceArray.append(cell)
       theTable.insertRows(at: [IndexPath.init(row: theSourceArray.count - 1, section: 0)], with: UITableViewRowAnimation.left)
       theTable.endUpdate()
   }
}
0 голосов
/ 23 мая 2018

Ну, для одного tableView.reloadData() всегда будет обновляться весь просмотр таблицы.Поэтому, если данные поступают через сеть, вы всегда можете просто настроить свой источник данных, а затем вызвать tableView.reloadData().

. Вы также можете использовать tableView.beginUpdates() + tableView.endUpdates() с соответствующими вызовами вставки, удаления, перемещения (см. Документация Apple ) Но они обычно используются для анимации изменений.- Сначала нужно обновить источник данных и знать пути индекса, которые вы пытаетесь изменить.

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