Ios 从外部URL加载方法后继续加载视图
我有一个方法可以从外部url检索数据,从JSON格式将其加载到数组中,并填充UITableView。它工作得很好,但是没有迹象表明用户在下载数据时发生了什么Ios 从外部URL加载方法后继续加载视图,ios,objective-c,Ios,Objective C,我有一个方法可以从外部url检索数据,从JSON格式将其加载到数组中,并填充UITableView。它工作得很好,但是没有迹象表明用户在下载数据时发生了什么 - (void)viewDidLoad { [super viewDidLoad]; [self retrieveDataC]; } 下面是我为viewDidLoad尝试的代码,它在下载时添加了一个微调器动画。我试图将retrieveDataC放在后台线程上,当它完成时,我希望视图继续执行,就像我没有实现上面示例中的多线
- (void)viewDidLoad
{
[super viewDidLoad];
[self retrieveDataC];
}
下面是我为viewDidLoad尝试的代码,它在下载时添加了一个微调器动画。我试图将retrieveDataC
放在后台线程上,当它完成时,我希望视图继续执行,就像我没有实现上面示例中的多线程一样
- (void)viewDidLoad
{
[super viewDidLoad];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
spinner.center = CGPointMake(160, 240);
[self.view addSubview:spinner];
[spinner startAnimating];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self retrieveDataC];
dispatch_async(dispatch_get_main_queue(), ^{
[spinner stopAnimating];
});
});
}
加载微调器会在短时间内正确显示,但在该过程完成后,我会看到一个空白表,好像我没有调用[self-retrieveDataC]
。有什么建议吗?我是否正确设置了后台进程
多谢各位
编辑:
这就是最终起作用的原因-
- (void)viewDidLoad
{
[super viewDidLoad];
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(160, 240);
[self.view addSubview:spinner];
[spinner startAnimating];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self retrieveDataC];
dispatch_async(dispatch_get_main_queue(), ^{
[spinner stopAnimating];
[self.collectionView reloadData];
});
});
}
收到数据后是否调用
[self.tableView reloadData]
?是。但它是在retrieveDataC
的末尾。我在[spinner stop animating]下将其移出代码>成功了。你知道为什么它不能工作吗?因为你应该在主线程(队列)上调用重载数据。阅读本文的更多内容: