web-dev-qa-db-fra.com

Storyboard - Masquage de la barre supérieure du contrôleur de navigation par programmation

J'utilise un storyboard et j'essaie de masquer une barre supérieure de mon contrôleur de navigation principal lorsqu'un certain bouton est enfoncé (ou qu'une fonction est appelée). Je sais que je dois initialiser un objet faisant référence à un contrôleur de navigation à partir d'un storyboard (en utilisant des identificateurs), mais lorsque j'envoie le message setNavigationBarHidden à cet objet nouvellement créé, rien ne se passe vraiment à l'écran.

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

[navController setNavigationBarHidden:YES animated:YES];

Quelqu'un sait-il quel est le problème?

30
animal_chin

Enfin résolu. Vous devez toujours masquer la barre de navigation uniquement via viewController.

Dans ma question ci-dessus, j'ai instancié un tout nouveau navigationController qui ne pointait pas vers le vrai navController à l'écran. Vous pouvez obtenir le "vrai" via le contrôleur de vue comme ceci:

[viewController.navigationController setNavigationBarHidden:YES animated:YES];
69
animal_chin

Il existe deux façons de masquer la barre supérieure du contrôleur de navigation:

1) par programmation

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

2) Utilisation d'Interface Builder

Vous pouvez décocher "Affiche la barre de navigation" dans la liste des propriétés du contrôleur de navigation.

enter image description here

Veuillez vous assurer que vous avez sélectionné une scène contenant le contrôleur de navigation. Exemple d'image de scène.
enter image description here

21
Aamir

dans Swift 4:

self.navigationController!.navigationBar.isHidden = true

quelque chose comme ça:

override func viewDidLoad() {
        super.viewDidLoad()
       self.navigationController!.navigationBar.isHidden = true
    }
9
Brian

J'ai rencontré le même problème, cela a fonctionné pour moi

navController.navigationBar.hidden = OUI;

5
jwall

Les réponses sont correctes. Je veux juste ajouter que vous voudrez probablement remettre la barre de navigation lorsque vous quittez la vue car d'autres vues pourraient l'utiliser et lorsque vous la cachez pour une, elle est cachée pour tous.

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

et avant de quitter la vue:

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

"

2
user1296082

Dans Xamarin.iOS

base.NavigationController.NavigationBarHidden = true;
1
Durai Amuthan.H

SetRoot RootViewController après avoir modifié les propriétés.

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

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

Définition de RootViewController

 [appDelegate.window setRootViewController: navController];

ou bien vous pouvez le faire dans n'importe quel ViewController

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

Je masque ma barre de navigation en décochant la visibilité de la barre "Affiche la barre de navigation" dans l'inspecteur d'attributs. J'espère que cela aidera quelqu'un.

enter image description here

0
Avijit Nagare