¿Cómo implementar la rotación UIViewController en respuesta a los cambios de orientación?

Mi aplicación tiene unos 10 UIViewControllers diferentes, solo uno de los cuales quiero cambiar al modo horizontal si el dispositivo gira. (Todo lo demás, quiero mantenerlo en retrato).

Para implementar la rotación en esa única vista, necesitaba implementar el método 'shouldAutorotate' de su controlador y devolver YES. Dado que se accede a esta vista a través de un controlador de navegación, también necesitaba crear una subclase de UINavigationController que implemente 'shouldAutorotate' y devuelva YES.

Esta solución funciona, pero demasiado bien. Encuentro que todos los UIViewControllers que introduzco en mi subclase de UINavigationController responden a la rotación, incluso si implemento 'shouldAutorotate' y devuelvo NO. (Recuerde: solo quiero que un UIViewController en particular responda a la rotación, no todos en la pila del controlador de navegación).

Entonces, mi pregunta es: ¿cómo hago mejor esto? Todas las soluciones que se me ocurren parecen 1) engorrosas y 2) peores, no parecen funcionar.

Muchas gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta