(iphone)当UI更新时,如何显示活动指示器?

时间:2011-04-22 17:40:13

标签: iphone viewdidload viewdidappear

我尝试在重度UI更新时显示活动指示。

我最初的失败尝试是

  
      
  1. 在view1
  2. 显示活动指示器   
  3. pushViewController(创建此viewController的视图需要很长时间)
  4.   
  5. 当view1的viewDidDisappear时(当pushViewController的推动动画时)   发生),隐藏活动指标
  6.   

问题是即使我在pushViewController之前调用了“show activity indicator”,因为在创建正在推送的viewController视图时发生了大量的UI,因此没有显示活动指示。

我改变了战略,但它起作用,我不明白为什么。

  
      
  1. pushViewController
  2.   
  3. 在viewController的viewDidLoad中显示活动指示器
  4.   
  5. 在viewDidAppear处加载大量的UI并隐藏指示符
  6.   

我的印象是指标没有出现第一种方法的原因是由于UI过程繁重 请参阅链接中的讨论。 (iphone) showing activity indicator before heavy ui updating

如果队列上的UI更新过多导致UI更新延迟(指示器未显示),为什么第二种方法有所不同?

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

但是有一个根本的区别可以解释为什么使用viewDidAppear的第二种方法适用于我的情况?

除了所谓的主线程之外还有UI更新线程吗? 或主线程是UI更新线程?

谢谢

1 个答案:

答案 0 :(得分:0)

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

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