Problema pushViewController de Landscape a Portrait

Estoy tratando de ir desde un control de visualización que admite el paisaje (mientras está en modo horizontal), a uno que explícitamente no (y no debería) soportar el paisaje. Estoy haciendo esto de la siguiente manera:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { return (toInterfaceOrientation == UIInterfaceOrientationPortrait); } 

Idealmente quiero que el nuevo viewController que estoy empujando en la stack para comenzar inicialmente en retrato, no en paisaje. Extrañamente incluso con este método implementado, comienza en Paisaje.

Mi única suposition es que Apple no quiere que un usuario haga la transición de paisaje a retrato (a pesar de que nos permite ir de paisaje, de vuelta a un controller anterior que está en retrato).

Cualquier apreciación y / o ayuda sería muy apreciada.

Encontré una forma de forzar el retrato. Es un truco, pero aquí está. En el – (void) viewDidLoad del viewController para el que desea forzar el retrato haga lo siguiente:

 UIViewController *viewController = [[UIViewController alloc] init]; [self presentModalViewController:viewController animated:NO]; [self dismissModalViewControllerAnimated:NO]; [viewController release]; 

Esto básicamente obliga a retrato, mediante la presentación de un controller (que solo admite retrato por defecto).

Tendrá que presentar su nuevo controller de vista de manera modal. Si su controller de vista existe dentro de un controller de navigation, la orientación de todos los controlleres de visualización en la stack de navigation está implicada por el controller de vista raíz en la stack. Cualquiera que sea su controller de vista raíz en la stack de navigation regresa de shouldAutoRotateToInterfaceOrientation luego se usa para todos los controlleres de vista debajo de él.

La respuesta de Sahil anterior está en desuso desde iOS 6.0. Sin embargo, lo siguiente parece hacer el mismo truco:

 UIViewController *viewController = [[UIViewController alloc] init]; [self presentViewController:viewController animated:NO completion:nil]; [self dismissViewControllerAnimated:NO completion:nil]; [viewController release];