【问题标题】:MBProgressHud not showing when network activity indicator is showingMBProgressHud 在显示网络活动指示器时未显示
【发布时间】:2013-04-26 21:59:43
【问题描述】:

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

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

【问题讨论】:

    标签: uitableview restkit afnetworking mbprogresshud


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      我最终使用this 技术让 MBProgressHud 有时间在指标再次占用循环之前显示。

      - (void)showProgressHud
      {
          dispatch_async(dispatch_get_main_queue(), ^{
              [MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES];
              [[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
          });
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        相关资源
        最近更新 更多