Я пытался показать индикатор активности во время интенсивного обновления пользовательского интерфейса.
Моя первоначальная неудачная попытка была
- показать индикатор активности на view1
- pushViewController (создание представления этого viewController занимает много времени)
- когда view1 viewDidDisappear (когда push-анимация pushViewController
происходит), скрыть индикатор активности
Проблема была в том, что я вызывал «показывать индикатор активности» перед pushViewController, индикатор активности не показывался из-за тяжелого пользовательского интерфейса, возникшего при создании представления viewController, которое выдвигалось.
Я изменил стратегию, как показано ниже, и она работает, и я не понимаю, почему.
- pushViewController
- показать индикатор активности при viewDidLoad viewController
- выполнить интенсивную загрузку пользовательского интерфейса в viewDidAppear и скрыть индикатор
У меня сложилось впечатление, что причина, по которой индикатор не отображался при первом способе, была вызвана интенсивным процессом пользовательского интерфейса.
Пожалуйста, обратитесь к обсуждению по ссылке.
(iphone) показывает индикатор активности перед интенсивным обновлением пользовательского интерфейса
Если слишком большое обновление пользовательского интерфейса в очереди вызвало задержку обновления пользовательского интерфейса (индикатор не отображается), почему второй метод имеет значение?
Я знаю, что viewDidLoad вызывается только при создании представления.
И viewDidAppear вызывается, когда представление фактически отображается на экране (следовательно, может вызываться несколько раз)
Но есть ли принципиальная разница, которая объясняет, почему второй подход использования viewDidAppear работает в моей ситуации?
И есть ли поток обновления пользовательского интерфейса, кроме так называемого основного потока?
Или основной поток является потоком обновления пользовательского интерфейса?
Спасибо