0

我试图在大量 UI 更新时显示活动指示器。

我最初的失败尝试是

  1. 在 view1 上显示活动指示器
  2. pushViewController(创建这个viewController的视图需要很长时间)
  3. 当view1的viewDidDisappear(当pushViewController的push动画发生时),隐藏activity indicator

问题是即使我在 pushViewController 之前确实调用了“显示活动指示器”,但由于在创建被推送的 viewController 的视图时发生了繁重的 UI,活动指示器没有显示。

我改变了策略如下,它有效,但我不明白为什么。

  1. 推视图控制器
  2. 在 viewController 的 viewDidLoad 处显示活动指示器
  3. 在 viewDidAppear 执行繁重的 UI 加载并隐藏指示器

我的印象是,第一种方法没有显示指示器的原因是由于 UI 处理繁重。
请参阅链接中的讨论。 (iphone) 在大量 ui 更新之前显示活动指示器

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

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

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

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

谢谢

4

1 回答 1

0

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

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

于 2011-04-22T18:54:58.553 回答