В моем приложении есть панель вкладок, содержащая контроллеры навигации.
Когда я поворачиваюсь в альбомную ориентацию, я переключаюсь в другое представление, помещая ландшафтное представление в стек контроллера навигации следующим образом:
- (void) orientationDidChange: (NSNotification *) notification {
if (self.tabBarController.selectedViewController == self.navigationController) {
if (self.navigationController.topViewController == self &&
[[notification name] isEqualToString: kOrientationLandscape]) {
[self.navigationController pushViewController: landscapeViewController animated: NO];
}
if (self.navigationController.topViewController != self &&
[[notification name] isEqualToString: kOrientationPortrait]) {
[self.navigationController popViewControllerAnimated: NO];
}
}
}
Это работает нормально, но когда я поворачиваюсь назад к портрету, вид отображается правильно, а затем «подпрыгивает» на величину, которую я предполагаю - это высота панели навигации. Верхняя часть вида скрывается за панелью навигации.
Если я нажимаю другой контроллер сверху обычным образом, а затем возвращаюсь обратно в портретный режим, он отображается правильно - это происходит только при повороте назад из пейзажа.
Кроме того, он отлично работает в симуляторе, но не на iPhone. Я собираюсь для 2.0, но, похоже, то же самое для более поздних версий.
Есть идеи?
Приветствие
Ash