Вы можете настроить навигационный контроллер и один основной вид. Затем вы можете использовать вид шаблона для макетов портрета и ландшафта (2 дополнительных вида).
Вам нужно будет настроить элементы управления на главном экране и убедиться, что каждый из них имеет уникальный тег. Ваш основной вид не будет использоваться, вместо этого вы скопируете элементы управления в два представления шаблона и настроите их в зависимости от того, как вы хотите, чтобы каждый вид выглядел. Преимущество этого состоит в том, что каждое представление сохранит свой тег, который становится очень важной частью этой реализации.
При этом вы используете гибридный подход в отношении написания некоторого кода пользовательского интерфейса и использования Interface Builder. После установки двух шаблонов создайте уникальный идентификатор для каждого. Вам придется написать некоторую логику для обработки представления и его подпредставлений. Рекурсивный метод для возврата их коллекции на основе выбранного вами шаблона.
Основная логика в реализации контроллера корневого представления должна будет проверить isPortrait, и на основании этого вы захотите загрузить правильное представление на основе идентификатора.
Поэкспериментируйте с этой концепцией и посмотрите, работает ли она для вас. Основным преимуществом отказа от использования двух отдельных представлений с уникальными элементами управления (а не с общим подходом с одинаковыми тегами) является то, что вы сохраняете доступ к своим исходным подпредставлениям. Любые переменные экземпляра, которые вы определяете в контроллере представления, которые указывают на текстовое поле, метку и т. Д., Продолжают это делать независимо от того, какой вид шаблона используется. Это поддерживает модель, представление, подход контроллера, поскольку структура данных остается неизменной.
Используя этот подход, вы все равно можете максимизировать использование построителя интерфейса и макета шаблонов для каждого представления, при этом сохраняя гибкость при написании некоторого пользовательского кода пользовательского интерфейса, если хотите. Использование только компоновщика интерфейса иногда может быть немного ограничивающим, а написание собственного кода, основанного на ориентации, приводит к утомительной работе.
Надеюсь, это поможет некоторым.