Как держать NavigationController в ориентации subViewController? - PullRequest
0 голосов
/ 18 ноября 2011

Я создал структуру NavigationController. FirstViewController - это RootViewController, SecondViewController - это следующий SubViewController. Каждый ViewController долженAutorotateToInterfaceOrientation отличается (см. Следующий код). FirstViewController доступен только в портретном режиме. SecondViewController все поддерживают Portrait и landscapeMode.

В FirstViewController после касания кнопки вызовите pushHandler. Следующий SecondViewController является нажатием. В SecondViewController после поворота ландшафта обратно в FirstViewController эта ориентация слишком горизонтальна.

но я реализовал каждую ориентацию ViewController по-разному. однако каждый ViewController не самостоятельно устанавливает ориентацию. почему случилось?

Как я могу просмотреть контроллер, каждую ориентацию можно установить независимо, чтобы сделать?

Если SecondViewController изменяет ориентацию ландшафтного режима. Я хочу вернуться к FirstViewController по-прежнему PortraitMode (навсегда удерживайте PortraitState Все, что не будет затронуто). Как мне реализовать программно?

FirstViewController *rootViewController = [FirstViewController alloc] init];

UINavigationController *MyNavigationController = [UINavigationController alloc] initWithRootViewController:rootViewController]];

// FirstViewController

- (void)pushHandler
{
    SecondViewController *subViewController = [SecondViewController alloc] init];

    [[self navigationController] pushViewController:subViewController animated:YES];
    [subViewController release];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{    
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

// SecondViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{    
    return YES;
}

1 Ответ

0 голосов
/ 18 ноября 2011

Поскольку вы используете UINavigationController для всех своих UIViewControllers, какое бы поведение ориентации вы не установили для UINavigationController, оно будет применено ко всем его children или к другим объектам в своем стеке.

Думайте о UINavigationController как о доме, а UIViewControllers как о комнатах.Все комнаты в доме будут вращаться так же, как и дом.Невозможно превратить комнату, не превращая дом и другие комнаты.

Но, как всегда, есть хитрости.Посмотрите на мой ответ на этот вопрос Имеется только один вид автозапуска в xcode?

...