当网络活动指示器显示时,MBProgressHud不显示
问题描述:
我正在使用表格视图并试图显示MBProgressHud以显示模式(2.5秒)需要很长时间的单元格选择。当网络活动指示器显示时,MBProgressHud不显示
这是我如何我开始MBProgressHud:
- (void)showProgressHud
{
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES];
});
}
- (void)hideProgressHud
{
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.streamTableView animated:YES];
});
}
我注意到,进度HUD显示,只有当网络活动指示灯不旋转。
当表重新加载时(使用Restkit 0.20.0),网络变为活动状态。我有AFNetworking配置为在打开连接时启动活动指示器。
我已经验证了,如果我禁用活动的指标问题不消失:
[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:NO];
我真的希望能够保留选项启用两种方式。有什么建议么?
答
看起来网络活动指示器正在捆绑MBProgressHud使用的运行循环。
我结束了使用this技术,让MBProgressHud时间指标的关系再次循环之前显示。
- (void)showProgressHud
{
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
});
}
答
您似乎在主线程上运行您的网络代码,并阻止任何UI更新,直到它完成。检查单元格选择/重新加载后如何启动网络连接,并确保它正在排队到后台线程上。该活动的指标是完全独立于您的应用程序代码(事实上,它运行在不同的线程,这就是为什么它的工作原理,并不会受到影响,也没有你的应用程序UI)。