web-dev-qa-db-fra.com

Comment masquer une barre de navigation du premier ViewController dans Swift?

Comment masquer une barre de navigation du premier ViewController ou d'un ViewController particulier dans swift? 

J'ai utilisé le code suivant dans viewDidLoad():

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

et aussi sur viewWillAppear:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

Les deux méthodes masquent le contrôleur de navigation à tous les ViewControllers.

184
Aby Mathew

Si vous savez que la barre doit être visible dans toutes les autres vues, vous pouvez utiliser viewWillDisappear pour le rendre visible à nouveau.

En rapide:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: animated)
}
140
wvteijlingen

Swift 3

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

    // Hide the navigation bar on the this view controller
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

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

    // Show the navigation bar on other view controllers
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
230
Michael Garito

Vous pouvez afficher navigationController dans viewWillDisappear

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

Swift 3

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

    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
72
Deepesh

Vous pouvez également créer une extension pour cela afin de pouvoir la réutiliser sans l'implémenter encore et encore dans chaque contrôleur de vue.

import UIKit

extension UIViewController {
    func hideNavigationBar(){
        // Hide the navigation bar on the this view controller
        self.navigationController?.setNavigationBarHidden(true, animated: true)

    }

    func showNavigationBar() {
        // Show the navigation bar on other view controllers
        self.navigationController?.setNavigationBarHidden(false, animated: true)
    }

}

Vous pouvez donc utiliser les méthodes d'extension ci-dessous

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

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        showNavigationBar()
    }
17
Ankahathara

Dans Swift 3, vous pouvez également utiliser la propriété isNavigationBarHidden pour afficher ou masquer la barre de navigation.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // Hide the navigation bar for current view controller
    self.navigationController?.isNavigationBarHidden = true;
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // Show the navigation bar on other view controllers
   self.navigationController?.isNavigationBarHidden = false;
}
6
Dilip Jangid

Façons d'afficher la barre de navigation dans Swift:

self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.isNavigationBarHidden = false
2
Mahesh Chaudhari

Façons de masquer la barre de navigation dans Swift:

self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true
1
Mahesh Chaudhari

Vous pouvez le faire depuis le contrôleur de fenêtre (Swift3)

class WindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

        window?.titleVisibility = .hidden
    }
}
0
Pedro Luz

J'utilise une variante de ce qui précède et j'isole des sections de mon application pour qu'elles soient intégrées à différents NavControllers. De cette façon, je n'ai pas à réinitialiser la visibilité. Très utile dans les séquences de démarrage, par exemple.

0
drew..

Dans IOS 8, faites comme 

navigationController?.hidesBarsOnTap = true

mais seulement quand il fait partie d'un UINavigationController  

le rendre faux quand vous le voulez en arrière

0
Xar E Ahmer
 private func setupView() {
        view.backgroundColor = .white
        navigationController?.setNavigationBarHidden(true, animated: false)
    }
0
Wasim