Я искал повсюду, и я не уверен, что то, что я нашел, является лучшим способом справиться с этим (хотя кажется, что это единственный).
Согласно Хотите использовать несколько наконечников для различных ориентаций интерфейса 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, похоже, на самом деле не заботится о документации и передовых методах (кстати, весь этот механизм очень далек от идеала, и я могу сказать, что это исходит из фона проектирования и программирования взаимодействия человека и компьютера), что correc - Apple, как это сделать?