iPhone — Как мне сделать ViewControllers ландшафтными?

#uiviewcontroller #uinavigationcontroller #landscape

#uiviewcontroller #uinavigationcontroller #ландшафтный

Вопрос:

У меня есть UINavigationController и два ViewControllers. Проблема, с которой я сталкиваюсь, заключается в том, что представления генерируются в портретном размере, хотя я хочу, чтобы они были в альбомной ориентации!

Вот что я делаю:

1) Создаем экземпляр view1 и добавляем его в стек UINavigationControllers. Это выполняется внутри метода applications delegate didFinishLoadingWithOptions(…).

2) view1 имеет кнопку, при нажатии на которую создается экземпляр view2 и помещается в стек UINavigationControllers.

Похоже, что это работает нормально, если не считать того факта, что представления создаются в портретном формате. Я собирался вручную принудительно настроить ландшафт, используя методы преобразования, как только я создам их экземпляр, но это кажется действительно хакерским.

Я предположил, что это как-то связано с методом «shouldAutorotateToInterfaceOrientation», но он установлен для ландшафта во всех ViewControllers.

Я в полном замешательстве.

Вопрос 1) Как, черт возьми, мне решить это, является ли подход «хакерского преобразования» единственным способом?

Вопрос 2) Правильно ли это использовать NavigationController — я новичок в программировании для iPhone. Все, что мне нужно, это два ландшафтных вида, между которыми я могу щелкнуть, и это, кажется, делает это помимо ландшафтного бита ^^.

Ответ №1:

Я нашел ответ на эту проблему.

Навигационный контроллер наследует метод shouldauthororatetointerfaceorerntation для каждого из представлений внутри своего стека, однако я допустил ошибку 🙂

После добавления NavController в главное окно я не удалил ту часть, где по умолчанию он добавляет представление RootController в главное окно. Произошел какой-то конфликт, из-за которого мой навигационный контроллер перестал работать должным образом — удаление этой строки все исправило.