重新加载数据时MBProgressHUD未显示

时间:2012-10-14 20:07:01

标签: objective-c ios ios5 mbprogresshud

我的应用启动时加载了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];
    });
}

1 个答案:

答案 0 :(得分:2)

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