我正在使用表视图并尝试显示MBProgressHud用于细胞选择,这需要花费很长时间来呈现模态(2.5秒)。
以下是我开始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];
我真的希望能够以任何方式启用该选项。有什么建议吗?
答案 0 :(得分:0)
您似乎在主线程上运行网络代码并阻止任何UI更新,直到完成为止。检查在单元格选择/重新加载后如何启动网络连接,并确保它正在排队到后台线程上。活动指示器与您的应用程序代码完全分开(实际上它在不同的线程上运行,这就是它工作的原因,并且不会影响您的应用程序UI)。
答案 1 :(得分:0)
看起来网络活动指标正在占用MBProgressHud使用的运行循环。
我最终使用this技术允许MBProgressHud时间在指示器再次绑定循环之前显示。
- (void)showProgressHud
{
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
});
}