我有一种方法从外部URL检索数据,从JSON格式加载到数组中,并填充UITableView。它工作正常,但没有迹象表明用户在下载数据时发生了某些事情。
- (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];
});
});
}
答案 0 :(得分:1)
收到数据后,您是否致电[self.tableView reloadData]
?