【问题标题】:Activity indicator not showing when there is loop code?有循环代码时活动指示器不显示?
【发布时间】:2009-11-16 19:14:17
【问题描述】:

我正在欢迎屏幕和主屏幕中显示活动指示器。它在欢迎屏幕中运行良好。在主视图中,有一个“for”循环代码执行 16 次任务。此时,设备看起来有点挂起,以避免我想显示活动指示器。当我在一些循环(16 次)代码进行期间在主屏幕中添加标准活动代码时,我没有观察到设置的活动指示器显示。它仅在循环完成后出现。我尝试在执行循环代码之前给出一些延迟,但在预期时间内仍然没有显示。否则用户可能会认为我的应用程序挂起设备,所以我想在那个时候显示活动指示器。

欢迎任何解决此问题的建议!

谢谢。

【问题讨论】:

    标签: iphone


    【解决方案1】:

    发生的情况是,当您的程序阻塞主运行循环时,UIKit 不会在指示器上调用 start,直到您的代码完成。解决这个问题的方法是,使用以下命令让你的循环在后台线程中运行:

    - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg

    NSObject 上的方法,这应该可以解决您的问题。

    这里是方法文档的链接:

    NSObject Reference

    【讨论】:

      【解决方案2】:

      UI 元素仅在当前运行循环完成时更新。如果您要在与运行 for 循环的同一线程中添加和启动活动指示器并进行 16 次计算,则指示器将在这些计算完成之前不会更新,因为当前的运行循环在此之前无法完成点。

      您应该做的是在主线程中添加并启动活动指示器(就像您现在可能正在做的那样),然后在后台线程中启动 for 循环。当该后台线程中的工作完成时发布通知,此时(返回主线程)您可以停止并移除活动指示器。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多