2013-10-13 58 views
0

我想使用MBProgressHUD通知用户有关处理来自数组的数据。我有一个有N个元素的数组,并且每个元素都需要处理它(这意味着一段时间),所以我想告诉用户进度(x%已完成)MBProgressHUD处理来自数组的数据

我有一种方法,处理此阵列(过程数据:(NSArray的*)数据)的数组的每个元素遍历

我试图HUD详细文本标签设置为0%调用过程数据之前:(NSArray的*)数据,然后调用这种方法和更新每次迭代hud,但hud不更新(我认为这是由于我在主线程中执行方法...)

有这样做的方法吗?我应该在后台执行processData :(NSArray *)数据?如果这是解决方案,我该怎么做?

非常感谢您

+0

介意共享一些代码? –

+0

你应该从主线程更新它。任何UI活动应该总是在主线程 –

+0

中,您可能没有正确使用MBProgressHUd。 –

回答

0

为了让应用程序响应你应该在一个单独的线程中执行任何长期运行的代码。要做到这一点,只需移动方法processData的整个逻辑块内部是这样的:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    /// The code here will be executed in a background thread 
}); 

并更新UI,你应该确保实现从主UI线程的正确调用。 因此,您现在可以在另一个块内执行正确的代码,这将在主线程中执行,如下所示:

dispatch_async(dispatch_get_main_queue(), ^{ 
    /// The code here will be executed in main UI thread 
});