有循环代码时活动指示器没有显示?

时间:2009-11-16 19:14:18

标签: iphone

我在欢迎屏幕和主屏幕上显示活动指示器。它在欢迎屏幕上工作正常。在主视图中,有一个'for'循环代码,可以执行16次任务。这时,设备看起来有点挂,以避免我想显示活动指示。当我在一些循环(16次)代码进行过程中在主屏幕中添加标准活动代码时,我没有观察到设置活动指示器显示。它只在循环结束后才出现。我在尝试循环代码之前尝试了一些延迟,但在预期的时间内仍未显示。否则用户可能会认为我的应用程序挂起了设备,所以我想在那时显示活动指示器。

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

感谢。

2 个答案:

答案 0 :(得分:6)

当程序阻塞主运行循环时,UIKit会在代码完成之前不会调用指示符上的start。解决这个问题的方法是,使用:

使循环在后台线程中运行

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

在NSObject上的

方法,这应该解决你的问题。

以下是该方法文档的链接:

NSObject Reference

答案 1 :(得分:1)

UI元素仅在当前运行循环完成时更新。如果要在与运行带有16个计算的for循环相同的线程中添加和启动活动指示器,则指示器将不会更新,直到这些计算完成,因为当前运行循环无法完成在那之前。

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