我正在使用Swift 2.2中的应用程序。
我从初始模板创建了一个标签式应用程序。然后我在FirstViewController类中添加了一些代码,以便下载,解析和显示一些JSON格式的数据。
这是我的FirstViewController.swift文件的内容:
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:<#your photo here#>];
changeRequest.creationDate = serverDate
} completionHandler:^(BOOL success, NSError *error) {
if (success) {
}
}];
获取和解析数据实际上是有效的。问题是数据仅在我选择第二个选项卡然后返回第一个选项卡时显示。
当它加载标签时,它有默认文本,当我转到另一个标签然后返回第一个标签时,它会改变,然后是self.siteNameLabel.text = siteName。
我认为初学者可以解决它,但我不知道如何,或者可能是延迟?
或者如何在第一次加载视图控制器之前处理下载数据。
提前致谢。
答案 0 :(得分:0)
这可能与您用于更新UI的线程有关。请注意,dataTaskWithRequest
使用的完成块是在后台线程上执行的。
由于Apple只允许在主线程上进行UI更新,因此您可以使用类似的调度块(如上所述here)来解决此问题:
dispatch_async(dispatch_get_main_queue(), {
self.siteNameLabel.text = siteName
})
另请注意,如果您希望每次显示FirstViewController
时您的UI所依赖的数据都会更新,那么您应该将代码放在viewDidAppear
而不是viewDidLoad
。
希望这有帮助!