Лучшая практика для поддержки портретного и ландшафтного видов в UINavigationController - PullRequest
5 голосов
/ 02 июня 2011

Я искал все выше и ниже, и я не уверен, что то, с чем я столкнулся, - лучший способ справиться с этим (хотя он кажется единственным).

Согласно Хотите использовать несколько перьев для разных ориентаций интерфейса iphone Я реализовал соответствующие методы, и все, кажется, работает нормально. К сожалению, мне приходится иметь дело с UINavigationController, и каждая страница должна поддерживать как портретный, так и ландшафтный режимы и воспроизводить одинаковые функции в обоих режимах. Это означает, что если пользователь в какой-то момент решает переключиться с книжного на альбомный, все приложение должно позволять ему перемещаться по страницам в выбранном им режиме и обратно.

Очевидно, что не хватает документации, как с этим бороться. В моих представлениях у меня есть несколько кнопок с прикрепленным методом showChild, который выполняет навигацию. Все хорошо работает в портретном режиме (это режим по умолчанию, насколько я понимаю). Метод выглядит так:

- (IBAction)showChild:(UITapGestureRecognizer *)sender {
    UIView *view = [sender view];
    PortraitViewController *nextPortraitViewcontroller = [[PortraitViewController alloc] initWithNibName:@"Portrait" bundle:nil];
    [self.navigationController pushViewController:nextPortraitViewcontroller animated:YES];
}

Но когда дело доходит до ландшафтного режима, я получаю смешанные результаты. Метод showChild: в классе LandscapeViewController точно такой же, он создает представление, начиная с PortraitViewController, и передает его в контроллер навигации. Кажется, все идет хорошо, но когда я возвращаюсь назад, я получаю показанный предыдущий PortraitViewController, а не ландшафт, а также его подпредставления, а не то, где я их размещаю.

Теперь вопрос заключается в следующем: поскольку Apple, кажется, на самом деле не заботится о документации и лучших практиках (на самом деле весь этот механизм очень далек от идеала, и я могу сказать, что это происходит из-за опыта проектирования и программирования взаимодействия человека с компьютером ) в чем правильный подход Apple?

1 Ответ

2 голосов
/ 03 июня 2011

Я создал пример проекта, чтобы продемонстрировать, как я «решил» свою проблему.Вероятно, это не единственный и не лучший способ, но из-за документации или ее отсутствия это лучшее, что я придумал.

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