【问题标题】:MBProgressHUD while processing data from arrayMBProgressHUD 同时处理来自数组的数据
【发布时间】:2013-10-13 22:04:19
【问题描述】:

我想使用 MBProgressHUD 通知用户处理来自数组的数据。我有一个包含 N 个元素的数组,对于每个元素我都必须处理它(这意味着需要一些时间),所以我想通知用户进度(x% 已完成)

我有一个方法可以处理这个数组 (processData:(NSArray *)data) 迭代数组的每个元素

我尝试在调用 processData:(NSArray *)data 之前将 hud 详细文本标签设置为 0%,然后调用此方法并在每次迭代中更新 hud 但未更新 hud(我认为那是因为我正在主线程中执行该方法...)

有办法做到这一点吗?我应该在后台执行 processData:(NSArray *)data 吗?如果这是解决方案,我该怎么做?

非常感谢

【问题讨论】:

  • 介意分享一些代码??
  • 你应该从主线程更新它。任何 UI 活动都应始终进入主线程
  • 您可能没有以正确的方式使用 MBProgressHUd。

标签: iphone ios objective-c background-process mbprogresshud


【解决方案1】:

为了让应用保持响应,您应该在单独的线程中执行任何长时间运行的代码。为此,只需将方法 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
});

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2018-01-31
    • 2023-01-08
    • 2011-01-30
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多