2011-11-21 20 views
26

Estoy usando un guión gráfico y estoy tratando de ocultar una barra superior de mi controlador de navegación principal cuando se presiona un botón determinado (o se llama a la función). Sé que tengo que inicializar un objeto que hace referencia a un controlador de navegación desde un guión gráfico (utilizando identificadores), pero cuando envío el mensaje setNavigationBarHidden a este objeto recién creado, realmente no sucede nada en la pantalla.Storyboard - Ocultar la barra superior del controlador de navegación programáticamente

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"]; 

[navController setNavigationBarHidden:YES animated:YES]; 

¿Alguien sabe cuál es el problema?

+0

¿Ha confirmado que' navController' no es igual a 'las negativas? –

+0

sí, lo probé y no es nada ... lo extraño es que ni siquiera puedo configurar el título de este controlador de navegación o interactuar con él de otra manera. Realmente no sé dónde está el problema ...:/ –

Respuesta

67

Finalmente lo resolvió. Siempre debe ocultar la barra de navegación solo a través de ViewController.

En mi pregunta anterior he instanciado un nuevo navegadorController que no apuntó al navegador real en la pantalla. Puede obtener el "real" a través del controlador de vista así:

[viewController.navigationController setNavigationBarHidden:YES animated:YES]; 
+1

Swift: 'self.navigationController? .setNavigationBarHidden (true, animated: false)' –

5

me enfrentaba mismo problema, esto funcionó para mí

navController.navigationBar.hidden = SI;

0

Oculto mi barra de navegación desactivando la barra Visibilidad "Muestra la barra de navegación" En el Inspector de atributos. Espero que esto ayude a alguien.

enter image description here

14

Hay 2 maneras de ocultar la barra superior del regulador de la navegación:

1) Programatically

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

2) Utilizando el Interface Builder

Puede desmarcar "Muestra la barra de navegación" en la lista de propiedades del Controlador de navegación.

enter image description here

Por favor asegúrese de que ha seleccionado escena que contiene regulador de la navegación. Imagen de ejemplo de la escena
enter image description here

3

en Swift:

self.navigationController!.navigationBar.hidden = true 

algo como esto:

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationController!.navigationBar.hidden = true 
    } 
+0

Para Swift 4 la propiedad se llama isHidden – Gerriet

0

setRoot RootViewController después de cambiar las propiedades.

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

// Create Navigation controller with RootViewController 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[storyBoard instantiateViewControllerWithIdentifier:@"MyRootViewController"]]; 

Configuración RootViewController

[appDelegate.window setRootViewController: navController]; 

o de lo que puede hacer en cualquier ViewController

[self.navigationController setNavigationBarHidden:YES animated:YES]; 
0

En Xamarin.iOS

base.NavigationController.NavigationBarHidden = true; 
1

Las respuestas son correctas. Solo quiero agregar que probablemente quiera volver a colocar la barra de navegación cuando abandone la vista, ya que otras vistas podrían usarla y, cuando la oculta, está oculta para todos.

override func viewDidLoad() { 
     super.viewDidLoad() 
     self.navigationController?.navigationBar.isHidden = true 
    } 

y antes de salir de la vista:

override func viewWillDisappear(_ animated: Bool) { 
     super.viewWillDisappear(animated) 
     self.navigationController?.navigationBar.isHidden = false 
} 

`

Cuestiones relacionadas