11

Tengo una aplicación de iPhone que actualmente estoy convirtiendo a universal binary para trabajar con el iPad. He implementado con éxito todo lo que necesito en términos de diseño, de modo que la funcionalidad de paisaje completo ahora es compatible con mi aplicación (anteriormente usaba principalmente el modo retrato para mostrar contenido).UINavigationController problemas de la pila de navegación en modo horizontal

Pero, tengo un problema extraño, Y SÓLO ocurre en modo apaisado: cuando presiono un controlador de vista en la pila, toma dos toques en el botón Atrás para volver al controlador de vista anterior! La primera pulsación muestra una vista en blanco, pero con el mismo nombre en el botón de navegación de la parte posterior izquierda, la segunda toma lleva al controlador a la vista anterior como debería.

No tengo un iPad para probar, así que estoy confiando en el simulador. El problema no aparece en el iPhone y no aparece si vuelves al modo vertical.

Mi aplicación consiste en una tabBarController con los controladores de navegación cargados por su VC:

//application delegate 
- (void)applicationDidFinishLaunching:(UIApplication *)application 
//.... 
WebHelpViewController *vc8 = [[WebHelpViewController alloc] init]; 
UINavigationController *nv8 = [[UINavigationController alloc] initWithRootViewController:vc8]; 

[self.tabBarController setViewControllers:[NSArray arrayWithObjects:nv1,nv2,nv3,nv4,nv5,nv6,nv7,nv8,nil]]; 

Para poner en práctica la capacidad de paisaje, la UITabBarController se reemplaza para autorotate cuando sea necesario:

//CustomTabBarController.m 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return [[(UINavigationController *)self.selectedViewController topViewController] shouldAutorotateToInterfaceOrientation:interfaceOrientation]; 
} 

... obras multa. Navego en nuevas vistas usando este método

SomeViewController *vc = [[SomeViewController alloc] init]; 
[self.navigationController pushViewController:vc animated:YES]; 
[vc release]; 

¿Esto es solamente un error de simulación? ¿Cómo soluciono este problema?

Respuesta

10

Suena como otra ViewController está respondiendo a:

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

Comprobar esta primera.

+1

Gracias amigo, ese era el problema. Necesitaba asegurarme de que todos mis ViewControllers implementados - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation; –

+0

Si está utilizando 'CMD + N' para crear nuevos' UIViewControllers' en XCode, este método es uno de los valores predeterminados que se incluyen como parte de la plantilla. – Sneakyness

+0

grrr Estoy enfrentando exactamente el mismo tipo de problema: estoy presentando un controlador de navegación como modal y luego presiono ViewControllers. El navController y todos los controladores empujados devuelven SÍ a shouldAutorotateToInterfaceOrientation pero en el paisaje, necesito presionar "atrás" dos veces para que la barra de navegación se actualice correctamente: ¿Alguna idea? – yonel

Cuestiones relacionadas