2012-08-07 23 views
7

Tengo una aplicación para iOS de guiones gráficos que tiene una cantidad de vistas que paso. Tengo un UINavigationController con la opción "Mostrar barra de herramientas" seleccionada, que luego se rellena en toda la jerarquía de mi vista.¿Cómo puedo ocultar la barra de herramientas de un UINavigationController usando storyboards?

decir que mi punto de vista es el flujo de 3 puntos de vista, A, B, y C:

View A --(push)--> View B --(push)--> View C 

Ver A es un controlador de vista normal, con un botón en la barra de herramientas se utiliza para empujar Ver B. Vista B se un controlador de tabla, por lo que quiero ocultar la barra de herramientas aquí. La vista C es otra vista como Vista A, con una barra de herramientas requerida para mostrarse.

En Xcode/Storyboard, si en View BI selecciona "Ocultar la barra inferior al pulsar", hace exactamente eso: la barra inferior está oculta para la Vista B. De manera similar, si elijo 'Ninguna' para la 'Barra inferior' opción, no hay barra para la Vista B. Bien.

Aquí está mi problema: No importa lo que haga, usando cualquiera de las opciones para ver B, mi barra de herramientas no vuelve para la vista C. Si configuro la barra de herramientas de View C como inferida (y desmarco ocultar al presionar) no lo hace t mostrar, ni si lo configuro manualmente en 'Barra de herramientas'.

¿Alguna idea?

Respuesta

15

Como dijo @ Zoltán, Storyboard no proporciona la respuesta completa.

Configuración self.navigationController.toolbarHidden = SÍ/NO en viewDidLoad o viewWillAppear es funcional, pero feo (aparece un rectángulo negro en el lugar de la barra de herramientas durante la animación de transición de vista).

Aquí es lo que hice para el controlador View B (y la inversa de Vista C) para imitar la suavidad animación de la opción "ocultar el empuje" en el guión gráfico:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setToolbarHidden:YES animated:YES]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setToolbarHidden:NO animated:YES]; 
} 
+0

¿Incluyó [super viewWillAppear: animated] y [super viewWillDisappear: animated]? –

+1

¡No olvides llamar a la vista de súperAparece y visualizaWillDisappear! – liefersfl

+1

¡Perfecto! En Swift: self.navigationController? .setToolbarHidden (true, animated: true) – abanet

2

No creo que puedas hacerlo puramente en The Storyboard. Sin embargo, puede configurarlo para que se muestre siempre, colocar los botones en él para cada vista en la que desee que aparezca y puede llamar al self.navigationController.toolbarHidden = YES; cuando se carga un viewcontroller en el que no desea que aparezca la barra de herramientas. Después de eso, si aparece otro CV en el que desea la barra de herramientas, simplemente establezca toolbarHidden en NO.

+0

Esto funciona, simplemente. Da a la transición una fea marca negra donde la barra de herramientas ha desaparecido. Pero es correcto en términos del código necesario y la incapacidad de Storyboards para proporcionar todo el contenido. – Freney

Cuestiones relacionadas