SVProgressHUD 在显示 UITableView 之前不显示
SVProgressHUD not displaying until UITableView is displayed
我正在尝试使用 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?
谢谢,
巴特
XMLParser.parse
可以挡住UI。尝试在后台线程上执行此操作:
DispatchQueue.global(qos: .background).async {
parser.parse()
}
DispatchQueue.main.async {
self.protocolTableView.reloadData()
}
在主线程中重新加载 tableView。
这是解决方案:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
DispatchQueue.main.sync {
self.protocolTableView.reloadData()
}
SVProgressHUD.dismiss()
}
感谢大家的帮助!!
UI 更新应该在主线程中完成:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
print("start reloading")
DispatchQueue.main.async(execute: {() -> Void in
self.protocolTableView.reloadData()
SVProgressHUD.dismiss()
})
}
我正在尝试使用 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?
谢谢, 巴特
XMLParser.parse
可以挡住UI。尝试在后台线程上执行此操作:
DispatchQueue.global(qos: .background).async {
parser.parse()
}
DispatchQueue.main.async {
self.protocolTableView.reloadData()
}
在主线程中重新加载 tableView。
这是解决方案:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
DispatchQueue.main.sync {
self.protocolTableView.reloadData()
}
SVProgressHUD.dismiss()
}
感谢大家的帮助!!
UI 更新应该在主线程中完成:
SVProgressHUD.show()
DispatchQueue.global(qos: .background).async {
parser.parse()
print("start reloading")
DispatchQueue.main.async(execute: {() -> Void in
self.protocolTableView.reloadData()
SVProgressHUD.dismiss()
})
}