(iphone) Как отобразить индикатор активности при значительном обновлении пользовательского интерфейса? - PullRequest
0 голосов
/ 22 апреля 2011

Я пытался показать индикатор активности во время интенсивного обновления пользовательского интерфейса.

Моя первоначальная неудачная попытка была

  1. показать индикатор активности на view1
  2. pushViewController (создание представления этого viewController занимает много времени)
  3. когда view1 viewDidDisappear (когда push-анимация pushViewController происходит), скрыть индикатор активности

Проблема была в том, что я вызывал «показывать индикатор активности» перед pushViewController, индикатор активности не показывался из-за тяжелого пользовательского интерфейса, возникшего при создании представления viewController, которое выдвигалось.

Я изменил стратегию, как показано ниже, и она работает, и я не понимаю, почему.

  1. pushViewController
  2. показать индикатор активности при viewDidLoad viewController
  3. выполнить интенсивную загрузку пользовательского интерфейса в viewDidAppear и скрыть индикатор

У меня сложилось впечатление, что причина, по которой индикатор не отображался при первом способе, была вызвана интенсивным процессом пользовательского интерфейса.
Пожалуйста, обратитесь к обсуждению по ссылке. (iphone) показывает индикатор активности перед интенсивным обновлением пользовательского интерфейса

Если слишком большое обновление пользовательского интерфейса в очереди вызвало задержку обновления пользовательского интерфейса (индикатор не отображается), почему второй метод имеет значение?

Я знаю, что viewDidLoad вызывается только при создании представления.
И viewDidAppear вызывается, когда представление фактически отображается на экране (следовательно, может вызываться несколько раз)

Но есть ли принципиальная разница, которая объясняет, почему второй подход использования viewDidAppear работает в моей ситуации?

И есть ли поток обновления пользовательского интерфейса, кроме так называемого основного потока? Или основной поток является потоком обновления пользовательского интерфейса?

Спасибо

1 Ответ

0 голосов
/ 22 апреля 2011

Сначала я хочу убедиться, что вы обновляете UIKit UI в главном потоке. Это необходимо, вам не нужно указывать поток при работе с UIKit, если только вы не говорите об использовании основного потока, но я думаю, что это будет излишним.

Я бы запустил индикатор активности в viewWillAppear. Затем загрузите все остальное в viewDidLoad.

...