bar iphone ipad uinavigationcontroller rotation popviewcontroller

iphone - uinavigationbar ios



popViewController no se autorrota a la orientaciĆ³n permitida (2)

Parece que los sistemas operativos más nuevos requieren todos los controladores UIView en la pila UINavigationController para admitir el mismo conjunto de orientaciones.

Tengo dos UIViewControllers, "A" y "B", donde "A" anula el shouldAutorotateToInterfaceOrientation para devolver YES para UIInterfaceOrientationPortrait, y "B" devuelve SÍ para todas las orientaciones. En mi ejemplo, "A" es el controlador de vista de navegación raíz, y luego uso pushViewController para "B". Después de eso, giro el dispositivo en horizontal, lo que autorrota con éxito "B", luego hago clic en "B" (botón de retroceso o mediante popViewController) para volver a "A".

Al apuntar a iPhone OS 3.1.3, "A" vuelve a la orientación vertical como se esperaba. Cuando me dirijo a iPhone OS 3.2, tengo dos efectos secundarios:

  1. "A" se muestra en el paisaje.
  2. La barra de navegación no se actualiza a pesar de que ahora se muestra "A". La barra de navegación todavía muestra los elementos para "B". Solo después de intentar retroceder / pop una vez más, la barra de navegación se animará para mostrar los elementos de "A". Si, en cambio, intento presionar "B" nuevamente y retroceder, tengo que hacer dos pops antes de que la barra de navegación se active para mostrar los elementos de "A". Durante estos "pops intermedios", la vista de "A" permanece visualizada.

Al investigar este tema, he visto otras respuestas que sugieren realizar la rotación manualmente ([UIDevice setOrientation] o mediante una transformación), sin embargo, esto no ayuda a comprender cuál es el problema, especialmente por qué se comporta de manera diferente entre los dos SO.

Entonces mi pregunta es: ¿deben todos mis UIViewControllers en la pila UINavigationController soportar exactamente las mismas orientaciones en el futuro? Y si no, ¿hay algo que deba hacer para que se comporte como lo hizo con OS 3.1.3?