2013-04-26 164 views
0

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

我真的希望能够保留选项启用两种方式。有什么建议么?

回答

0

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

我结束了使用this技术,让MBProgressHud时间指标的关系再次循环之前显示。

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

您似乎在主线程上运行您的网络代码,并阻止任何UI更新,直到它完成。检查单元格选择/重新加载后如何启动网络连接,并确保它正在排队到后台线程上。该活动的指标是完全独立于您的应用程序代码(事实上,它运行在不同的线程,这就是为什么它的工作原理,并不会受到影响,也没有你的应用程序UI)。