Инициализация иерархии контроллера представления изменилась в iOS5 - PullRequest
1 голос
/ 04 ноября 2011

Вот проблема. У меня есть следующая иерархия представления, которая выдвигается модально с помощью анимации:

  • BackViewController
    • UITabBarController
      • UINavigationController
        • ForecastListViewController

Это выглядит так:

enter image description here

Вот последовательность вызовов во время переворота в iOS 4.3:

  1. BackViewController viewDidLoad
  2. ForecastListViewController viewDidLoad
  3. BackViewController viewWillAppear
  4. ForecastListViewController viewWillAppear
  5. BackViewController viewDidAppear
  6. ForecastListViewController viewDidAppear

В iOS 5.0 порядок отличается (шаги 2 и 3 переключаются):

  1. BackViewController viewDidLoad
  2. BackViewController viewWillAppear
  3. ForecastListViewController viewDidLoad
  4. ForecastListViewController viewWillAppear
  5. BackViewController viewDidAppear
  6. ForecastListViewController viewDidAppear

Проблема в том, что теперь верхняя часть панели навигации отображается на 10 пикселей ниже нижней части строки состояния во время анимации сальто, а затем возвращается в ожидаемое положение после завершения анимации.

Я попытался изменить фрейм панели навигации в методе ForecastListViewController viewDidLoad без успеха: ничего не происходит.

Если я форсирую загрузку ForecastListViewController, так что это происходит, как на шаге 2 (путем принудительного обхода иерархии при исследовании этой проблемы), все снова в порядке. Но я ищу хорошее решение вместо этого "взлома".

Кто-нибудь с этой проблемой? Любая подсказка или указатель? Я в недоумении, как решить это элегантно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...