ios - iOS tableView 在单击、滚动或切换标签栏项目之前不会重新加载
问题描述
我有这个问题,在执行 API 调用后(在几个地方),视图不会刷新,直到用户操作 - 如 btn 单击、标签栏切换等发生。我觉得它与线程有关,但我似乎无法弄清楚,而且我是 iOS 编程的新手。我用 DispatchQueue 等尝试了不同的解决方案,使用它,而不是使用它。试图在控制器视图上调用 setNeedsDisplay。但还没有运气。以下是从我的一个标签栏项目视图控制器中提取的代码示例:
func getEmployeeUpdates(){
self.showLoader()
APIAdaptor.shared.getEmployeeUpdates(forEmployee: Session.shared.employee, completion: {
(updates:[ScheduleUpdate]?, error:Error?) in
guard error == nil else{
DispatchQueue.main.async {
// self.resetMainScreen()
self.hideLoader();
}
return
}
DispatchQueue.main.async {
self.hideLoader();
self.ScheduleUpdates = updates!
self.tableView.reloadData();
}
})
}
func showLoader(){
NSLayoutConstraint.activate([
activityIndicator!.centerXAnchor.constraint(equalTo: self.tableView.centerXAnchor),
activityIndicator!.centerYAnchor.constraint(equalTo: self.tableView.centerYAnchor)])
activityIndicator?.startAnimating();
}
func hideLoader(){
print("Hiding");
activityIndicator?.stopAnimating()
}
我附上了两张图片。第一个图像是 api 调用已完成(通过测试确认)但视图未刷新的位置。装载机被冻结。它应该在调用 hideLoader() 后消失。第二张图片是点击后,或者标签栏项目切换。
我还应该提到,在这个例子中,以及在其他 api 调用中,视图最终会在完成后刷新,但只有在显着延迟之后。
如果有人可以提供帮助,我将不胜感激!
解决方案
这是由 Xcode 10.1 上的模拟器引起的问题。如果您遇到此问题,请尝试更新 Xcode,或使用真实设备。
推荐阅读
- javascript - 如何修复 FileUpload 上的 InputStream ReadTimeout 错误
- python-3.x - 可以在 Linux 中写入 Python 文件进行部分写入吗?
- c# - 从其他类 C# 访问 Form1 按钮
- php - 为什么当我点击按钮时没有任何反应?
- sql - 从表中的多个列中搜索特定值
- c# - dotnetfiddle.net 在某些情况下会生成换行符 \n 而不是 \r\n
- vb.net - 需要编辑代码以获取两个字符串之间的所有字符串(仅获取第一个)
- karate - 空手道:匹配 xml 中的重复元素
- c++14 - Collect2:没有定义的错误引用方法
- python-2.7 - 如何在 python 2.7 中重新启动 python?