2012-09-20 24 views
13

tengo la constelación siguiente:Cómo cambiar de estado en modal Vistas iOS 6

Vista principal (Custom UIViewController, sin navigationcontroller o la barra de navegación), que contiene un botón que da paso de forma modal a un segundo controlador de vista Tabla, la cual es incrustado en un regulador de la navegación:

MainView -> Control de navegación -> TableView

por MainView la barra de estado es Negro (sin cambios con iOS 6 - incluso cuando la barra de estado se establece por defecto) por TableViewController la barra de estado debe tener Estilo predeterminado (gris en iOS 5, Blu e Teñido debido a la barra de navegación en iOS 6).

En iOS 5 Esto fue fácil por las siguientes líneas de código en TableViewController:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarStyle:)]) { 
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 
} 

La ejecución de este bajo iOS 6 señalando sucede. ¿Cómo puedo hacer esto? Intenté todas las configuraciones posibles de la barra de estado debajo del resumen del proyecto y en el plist (como se describe aquí: https://stackoverflow.com/a/12468689/1685971)

Además, en Storyboard todo se ve bien. Ejecución de la aplicación en el simulador o en el dispositivo se ve diferente: Storyboard Simulator

Respuesta

5

probar este "hack" : Tiene que agregar una barra de navegación a su primer controlador de vista. Entonces tienes dos posibilidades.

1) Establecer el valor alfa de la barra de navegación a 0

o

2) Ajuste la y-posición de la barra a -43px (mira aquí: http://moduscreate.com/tinting-your-status-bar-in-ios6-and-phonegap/)

EDIT:

Para obtener los colores correctos, debe establecer el tintColor del UINavigationBar invisible. Por lo tanto, por defecto, configúrelo en negro. En su acción de botón, debe establecer tintColor en su navigationController.navigationBar.tintColor. Con la acción de su botón de cierre, debe volver a establecerlo en [UIColor blackColor].

+0

imo el tinte de la barra de estado de funciones no está implementado limpiamente por Apple. Su solución es una solución. La solución limpia debería ser que la aplicación verifique el tinte de la barra de estado en cada controlador de vista, no solo en el primer controlador de vista. – FrankZp

2

El primer controlador de vista debe tener una navegación controlador/bar para la característica funcione. La barra de estado no cambia el color en su aplicación (en iOS6), pero se adapta al color de la barra de navegación de su vista inicial. Si su vista inicial no contiene una barra de navegación, la barra de estado no adapta el color. (Consulte http://i.stack.imgur.com/n9ubK.png)

+0

Sí, esta nueva función elige el color de la barra de navegación superior para matizar la barra de estado. Pero el requisito aquí es que el primer Controlador de Vista no tenga barra de navegación.En iOS 5 esto fue posible con el código anterior. ¡Pero en iOS 6 la barra de estado es inmutable! – FrankZp

+1

_En el TableViewController, la barra de estado debe tener Estilo predeterminado (gris en iOS 5, Azul tintado debido a la barra de navegación en iOS 6) ._ Esta suposición es incorrecta. –

+0

El código que se muestra arriba establece la barra de estado en TableViewController en Estilo predeterminado. Esto funciona en iOS5, no en iOS6 (la barra de estado se mantiene negra, vea la captura de pantalla de Simulator). – FrankZp

0

No tiene que establecer el estilo de la barra de navegación en su controlador tableviewcontroller.

Pruebe este enfoque. 1. Agregue el controlador de navegación a la vista principal. 2. Establezca su propiedad oculta en sí. 3. Cuando se muestra tableviewcontroller, establezca la propiedad barra de navegación oculta a ningún controlador

de navegación -> barra oculta = yes -> MainView -> barra oculta = no -> TableView

+0

El problema es que TableViewController se muestra de forma modal. Por lo tanto, MainViewController y TableViewController no pueden integrarse en el mismo Controlador de navegación (ver Capturas de pantalla de Storyboard). Cuando se usan dos Controladores de navegación (uno para MainView y otro para TableView) el problema descrito anteriormente permanece igual ... – FrankZp

Cuestiones relacionadas