11

He estado vagando cómo ocultar/eliminar/desactivar solo la barra de navegación principal o la primera en el controlador de navegación para poder poner una imagen como una pantalla de fondo completa, pero no pude encontrar ninguna solución.¿Cómo ocultar/deshabilitar solo la primera barra de uinavigation?

Trate de ocultar la vista de título en viewdidLoad del controlador de navegación principal pero no funcionó. Intenté usar navigationBarHidden pero oculta toda la barra de navegación para la siguiente pila de controlador.

Por lo tanto, no estoy seguro de cómo hacer esto. Para darte un ejemplo, me gustaría tener algo como esta aplicación: The Masters Golf Tournament - http://appshopper.com/sports/the-masters-golf-tournament.

Si mira la pantalla 1, no tiene ninguna barra de navegación en la parte superior, pero cuando toca cualquier opción, se desplazará a un nuevo controlador de vista y aparecerá la barra de navegación como en la pantalla 3,4 y 5

Espero que alguien pueda ayudarme con esto. ¡Muchas gracias!

Respuesta

18

En la mayoría de mis aplicaciones tengo una clase UIViewController personalizada de la que obtengo todos los demás controladores personalizados. En algunos de estos, agregué un método como navigationBarInitiallyHidden a la clase base que otras clases pueden anular. El resultado predeterminado depende de la naturaleza de la aplicación.

En el delegado del controlador de navegación, cuando se muestra un controlador que implementa ese método, el delegado oculta o muestra el controlador de navegación en consecuencia. Ya que animé el hide o show, verifico el estado actual y no hago nada si no se necesita ningún cambio.

Puede hacer algo más simple en su método delegado. Si el controlador que se muestra es el controlador raíz, oculte la barra de navegación; de lo contrario, muéstrela si está oculta.

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if (viewController == rootController) { 
    [navigationController setNavigationBarHidden:YES animated:animated]; 
    } else if ([navigationController isNavigationBarHidden]) { 
    [navigationController setNavigationBarHidden:NO animated:animated]; 
    } 
} 
12

Puede ocultar la barra de navegación: [self.navigationController setNavigationBarHidden:YES]; y en la que desea mostrar la barra de navegación de nuevo [self.navigationController setNavigationBarHidden:NO];

5

ocultar/desactivar

self.navigationController.navigationBarHidden = YES; 

mostrar/Habilitar

self.navigationController.navigationBarHidden = NO; 
0

Puede ocultar la barra de navegación mediante el uso del código de la parte inferior. A continuación, el código ocultará la barra de navegación en el momento de la vista MostrarAparecer.

Objective C

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

Swift

self.navigationController?.setNavigationBarHidden(true, animated: animated) 
Cuestiones relacionadas