Вот проблема.
У меня есть следующая иерархия представления, которая выдвигается модально с помощью анимации:
- BackViewController
- UITabBarController
- UINavigationController
- ForecastListViewController
Это выглядит так:
Вот последовательность вызовов во время переворота в iOS 4.3:
- BackViewController viewDidLoad
- ForecastListViewController viewDidLoad
- BackViewController viewWillAppear
- ForecastListViewController viewWillAppear
- BackViewController viewDidAppear
- ForecastListViewController viewDidAppear
В iOS 5.0 порядок отличается (шаги 2 и 3 переключаются):
- BackViewController viewDidLoad
- BackViewController viewWillAppear
- ForecastListViewController viewDidLoad
- ForecastListViewController viewWillAppear
- BackViewController viewDidAppear
- ForecastListViewController viewDidAppear
Проблема в том, что теперь верхняя часть панели навигации отображается на 10 пикселей ниже нижней части строки состояния во время анимации сальто, а затем возвращается в ожидаемое положение после завершения анимации.
Я попытался изменить фрейм панели навигации в методе ForecastListViewController viewDidLoad без успеха: ничего не происходит.
Если я форсирую загрузку ForecastListViewController, так что это происходит, как на шаге 2 (путем принудительного обхода иерархии при исследовании этой проблемы), все снова в порядке. Но я ищу хорошее решение вместо этого "взлома".
Кто-нибудь с этой проблемой?
Любая подсказка или указатель?
Я в недоумении, как решить это элегантно