web-dev-qa-db-fra.com

UINavigationController sans barre de navigation?

J'ai une application universelle et sur la version iPad, j'utilise UISplitViewController pour créer une interface similaire à l'application Mail.

J'avais du mal à créer de nouvelles vues de détail. J'ai donc décidé d'utiliser un UINavigationController afin de pouvoir simplement afficher et afficher des vues au besoin. Cependant, je ne souhaite pas utiliser la vue de navigation ou une barre d'outils. Mais peu importe ce que je fais, je ne peux pas cacher la barre de navigation.

J'ai essayé de décocher "Affiche la barre de navigation" dans IB et j'ai également essayé de régler:

[self.navigationController setNavigationBarHidden:YES];

dans le viewDidLoad/viewDidAppear/viewWillAppear. Je l'ai également essayé dans chacune des vues qui seront poussées. Rien ne fonctionne.

Y a-t-il quelque chose qui me manque ici? Est-il possible d'avoir un UINavigationController sans barre d'outils ni barre de navigation?

114
DOOManiac

Vous devriez pouvoir faire ce qui suit:

self.navigationController.navigationBar.hidden = YES;

où self.navigationController est (évidemment) une instance de UINavigationController. Cela semble fonctionner pour moi, mais je ne l'ai que brièvement testé avant de poster ceci.

186
Ashwin

Si vous ne voulez pas de barre de navigation et que vous souhaitez que le contenu soit ajusté à l'emplacement normal de la barre de navigation, vous devez utiliser

self.navigationController.navigationBarHidden = YES;

Cela vous donne un résultat comme celui-ci:

enter image description here

Tandis que self.navigationController.navigationBar.hidden = YES; vous donne un espace où la barre de navigation devrait être. Comme ça:

enter image description here

39
HalR

Dans Xcode 4.3.2:

  1. Sélectionnez le contrôleur de navigation dans le storyboard
  2. Sélectionnez l'inspecteur d'attributs dans le panneau (à droite) Utilitaires.
  3. Dans la catégorie Contrôleur de navigation, vous avez deux cases à cocher:

    [] Affiche la barre de navigation

    [] Affiche la barre d'outils

Travaillé pour moi ...

39
Avner

Swift 4

Je le cache en vueWillAppear

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

Ensuite, vous pouvez le remettre lorsque vous appuyez sur une séquence (si vous voulez avoir le bouton de retour sur la vue suivante)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }
7
user1296082

Swift 3 par programme

self.navigationController.isNavigationBarHidden = true

ou

self.navigationController.navigationBar.isHidden = true

Remarque: je n'ai pas vu de différence entre ces deux approches en test sur iOS 10.

3
Mobile Dan