0

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

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

4

2 回答 2

0

看起来网络活动指示器正在占用 MBProgressHud 使用的运行循环。

我最终使用这种技术让 MBProgressHud 有时间在指标再次连接循环之前显示出来。

- (void)showProgressHud
{
    dispatch_async(dispatch_get_main_queue(), ^{
        [MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES];
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
    });
}
于 2013-05-02T15:45:20.860 回答
0

您似乎在主线程上运行网络代码,并且在完成之前会阻止任何 UI 更新。检查您在单元选择/重新加载后如何启动网络连接,并确保它正在排队到后台线程。活动指示器与您的应用程序代码完全分离(实际上它在不同的线程上运行,这就是它工作的原因,并且不受应用程序 UI 的影响)。

于 2013-04-26T23:15:44.050 回答