我的应用启动时加载了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];
});
}
答案 0 :(得分:2)
您是否尝试在调度块中放入refreshPosts的整个代码(而不仅仅是调用reloadData)?我当然会试着看看它是否有效。我认为您的数据下载可能导致UI冻结,这可能会搞砸HUD。