когда вы реализуете UINavigationController, этот класс является вашим родителем, который управляет всеми дочерними viewControllers, которые будут помещены в стек. Следовательно, RootViewController - единственный контроллер, который говорит да или нет автоповороту. Даже если вы передаете «Да» на автоповорот в контроллерах дочерних представлений, они не учитываются!
Такова природа UINavigationController. Таким образом, чтобы изменить его, у вас есть два варианта:
1- Вручную манипулируйте им, что требует от вас прохождения некоторых громоздких кодов.
2 - Измените свой дизайн, чтобы он был более совместим с UINavigationController. Это единственное представление, которое должно вращаться, должно вызываться RootViewController (а не Navigation Root View Controller - они названы одинаково, но совершенно разные), представление, в котором размещается NavController. И когда устройство вращается, оно либо выдвигает NavController к представлению, либо другому.
3- Другой метод, который также будет работать, но не рекомендуется, поскольку он нарушает концепцию MVC, заключается в том, что ваш NavController может прослушивать уведомления. Это конкретное дочернее представление, которое МОЖЕТ и ДОЛЖНО вращаться, может генерировать уведомление - например, rotateMe, и когда NavController слышит его, он вращается.
Как я уже сказал, он будет работать, но он нарушает модель MVC - что хорошо для Apple, но с точки зрения программирования не рекомендуется.
Если вам нужно дополнительное объяснение по любому из них, пожалуйста, дайте мне знать.