方法从外部URL加载后继续加载视图

时间:2014-04-27 16:20:15

标签: ios objective-c

我有一种方法从外部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];
        });
    });

}

1 个答案:

答案 0 :(得分:1)

收到数据后,您是否致电[self.tableView reloadData]