如何异步更新UITableView?

时间:2018-05-23 15:21:02

标签: ios uitableview

如果需要异步更新作为UITableView数据源的数组,例如,其成员被删除并通过网络不断接收的数据附加,那么我们如何更新UITableView并插入和删除相应的行?

2 个答案:

答案 0 :(得分:1)

好吧,一个tableView.reloadData()将始终刷新整个表格视图。因此,如果数据来自网络,您可以随时调整数据源,然后调用tableView.reloadData()

您还可以将tableView.beginUpdates() + tableView.endUpdates()与相应的插入,删除,移动调用一起使用(请参阅Apple Documentation)但这些通常用于动画更改。 - 您必须先更新数据源,然后知道您尝试更改的索引路径。

答案 1 :(得分:0)

我使用主队列来更新它,所以当从网络事件中调用异步函数时,它将被重定向到主线程

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()
   }
}