如果需要异步更新作为UITableView数据源的数组,例如,其成员被删除并通过网络不断接收的数据附加,那么我们如何更新UITableView并插入和删除相应的行?
答案 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()
}
}