我正在尝试使用SVProgressHUD来指示应用程序正忙。
我的代码现在是:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
print("start reloading")
self.protocolTableView.reloadData()
print("end reloading")
SVProgressHUD.dismiss()
}
我收到了这个警告:
UITableView.reloadData() must be used from main thread only
在解析完成后显示tableView需要很长时间。
如何在读取主线程解析后更新tableView?
谢谢, 巴特
答案 0 :(得分:1)
XMLParser.parse
可以阻止用户界面。尝试在后台线程上执行此操作:
DispatchQueue.global(qos: .background).async {
parser.parse()
}
答案 1 :(得分:1)
UI更新应该在主线程中完成:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
print("start reloading")
DispatchQueue.main.async(execute: {() -> Void in
self.protocolTableView.reloadData()
SVProgressHUD.dismiss()
})
}
答案 2 :(得分:0)
DispatchQueue.main.async {
self.protocolTableView.reloadData()
}
在主线程中重新加载tableView。
答案 3 :(得分:0)
这是解决方案:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
DispatchQueue.main.sync {
self.protocolTableView.reloadData()
}
SVProgressHUD.dismiss()
}
感谢所有帮助!!