0

当我的应用程序启动时,我加载了一个 JSON。

MBProgressHUD 在数据加载时正确显示微调器。

我还有一个刷新按钮,可以触发重新加载 JSON - 我希望它显示微调器。尽管数据已刷新,但微调器未显示。

知道我做错了什么吗?

这是我的 ViewController.m 中的相关代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    [self fetchPosts];
}

- (IBAction)refresh:(id)sender {
    [MBProgressHUD showHUDAddedTo:self.view animated:YES]; // NOT WORKING
    [self refreshPosts];
}

- (void)fetchPosts
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://mysite.com/app/"]];

        NSError* error;

        posts = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

        dispatch_async(dispatch_get_main_queue(), ^{
            [self.collectionView reloadData];
        });
    });
}

- (void)refreshPosts
{
    NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://mysite.com/app/"]];

    NSError* error;

    posts = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.collectionView reloadData];
    });
}
4

1 回答 1

2

您是否尝试将 refreshPosts 的整个代码(而不仅仅是对 reloadData 的调用)放在调度块中?我当然会尝试看看它是否有效。我认为您的数据下载可能会导致 UI 冻结,这可能会破坏 HUD。

于 2012-10-15T01:48:48.533 回答