Проблемы со стеком навигации UINavigationController в ландшафтном режиме - PullRequest
11 голосов
/ 23 апреля 2010

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

Но у меня есть одна странная проблема,ТОЛЬКО происходит в ландшафтном режиме: когда я помещаю контроллер вида в стек, требуется два нажатия на кнопку возврата , чтобы вернуться к предыдущему контроллеру представления!Первое нажатие показывает пустой вид, но с тем же именем на левой боковой навигационной кнопке, второе нажатие возвращает контроллер к предыдущему виду, как и должно быть.

У меня нет iPad длятест, поэтому я полагаюсь на симулятор.Проблема не отображается на iPhone и не появляется, если вы вернетесь в портретный режим.

Мое приложение состоит из контроллера tabbar с контроллерами навигации, загруженными для его виртуальных каналов:

//application delegate
- (void)applicationDidFinishLaunching:(UIApplication *)application
//....
WebHelpViewController *vc8 = [[WebHelpViewController alloc] init];
UINavigationController *nv8 = [[UINavigationController alloc] initWithRootViewController:vc8];

[self.tabBarController setViewControllers:[NSArray arrayWithObjects:nv1,nv2,nv3,nv4,nv5,nv6,nv7,nv8,nil]];

Для реализации возможности ландшафта UITabBarController переопределяется для автоматического поворота при необходимости:

//CustomTabBarController.m
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return [[(UINavigationController *)self.selectedViewController topViewController] shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

... работает нормально.Я открываю новые виды, используя этот метод

SomeViewController *vc = [[SomeViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[vc release];

Это только ошибка симуляции?Как мне исправить эту проблему?

1 Ответ

10 голосов
/ 23 апреля 2010

Похоже, что другой ViewController отвечает на:

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

Сначала проверьте это.

...