在第一个选项卡视图控制器上启动之前加载数据

时间:2016-07-10 07:16:19

标签: ios xcode swift2 nsurl

我正在使用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。

我认为初学者可以解决它,但我不知道如何,或者可能是延迟?

或者如何在第一次加载视图控制器之前处理下载数据。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这可能与您用于更新UI的线程有关。请注意,dataTaskWithRequest使用的完成块是在后台线程上执行的。

由于Apple只允许在主线程上进行UI更新,因此您可以使用类似的调度块(如上所述here)来解决此问题:

dispatch_async(dispatch_get_main_queue(), {
    self.siteNameLabel.text = siteName
})

另请注意,如果您希望每次显示FirstViewController时您的UI所依赖的数据都会更新,那么您应该将代码放在viewDidAppear而不是viewDidLoad

希望这有帮助!