2011-04-22 40 views
0

我试图显示活动指标,同时沉重的用户界面更新。(iphone)如何在用户界面更新过程中显示活动指示灯?

我最初的失败尝试是在厂景​​

  1. 显示活动指示器
  2. pushViewController(此的viewController的创建视图需要很长的时间)时,厂景的viewDidDisappear(当pushViewController的推动动漫 发生
  3. ),隐藏活动指示器

即使我在pushViewController之前调用了“显示活动指示符”,问题仍然存在,因为在创建正在推送的viewController视图时出现沉重的用户界面,所以未显示活动指示符。

我改变策略如下,它的工作原理,我不明白为什么。

  1. pushViewController
  2. 展示在的viewController的viewDidLoad中
  3. 做繁重的UI装载在viewDidAppear和隐藏指示器

活动的指标我下的印象是,指标没理由第一种方法显示的原因是UI过程繁重。
请参考链接讨论。 (iphone) showing activity indicator before heavy ui updating

如果队列上的UI更新太多会导致UI更新延迟(指示符未显示),为什么第二种方法有所作用?

我知道viewDidLoad只有在视图被创建时才会被调用。
当在屏幕上查看实际显示出来(因此可以多次调用)

viewDidAppear被调用。但有这可以解释为什么使用viewDidAppear的第二个办法,我的情况下工作的根本区别?

是否有除所谓的主线程之外的UI更新线程? 或者主线程是UI更新线程?

谢谢

回答

0

首先,我想确保您正在更新主线程上的UIKit UI。这是必须的,除非你说使用主线程,否则你不应该在使用UIKit时指定线程,但我认为这是多余的。

我会在viewWillAppear中启动活动指示器。然后在viewDidLoad中加载其他所有内容。

+0

感谢您的建议,是的,我正在主线程中进行UI更新。我以为viewWillAppear会被多次召唤出一次观看。 ViewDidAppear被调用一次。为什么viewWill出现更好的选择?我应该维护一个布尔变量不加载多个指标视图,因为viewWillAppear被多次调用? – eugene 2011-04-22 19:59:02

+0

使用if语句来查看活动指示符是否具有动画效果。如果不是,那么动画。您的活动指示器应该已经创建好了,如果它在笔尖中,它真的很有用。当您调用viewWillAppear(或viewDidAppear,如果更适合您的应用程序时),并且在UI完全加载时,将其设置为可见和动画,并在UI完全加载时,将活动指示器设置为停止动画和不可见。 – 2011-04-22 21:06:37