MBProgressHud未显示何时显示网络活动指示符

时间:2013-04-26 21:59:43

标签: uitableview restkit afnetworking mbprogresshud

我正在使用表视图并尝试显示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];

我真的希望能够以任何方式启用该选项。有什么建议吗?

2 个答案:

答案 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]];
    });
}