it-swarm.com.de

Navigationsleiste in bestimmter Ansicht ausblenden - Swift 3

Ich habe einen NavigationController, der die Navigation durch meine App erledigt. __ Gemäß meinem Design sollte die allererste Ansicht keine sichtbare Navigationsleiste haben. Alle anderen werden es tun.

In dieser FirstView verwende ich dies bisher, um die NavBar im ViewDidLoad auszublenden:

self.navigationController?.isNavigationBarHidden = true

Von diesem FirstView aus kann ich auf andere Views zugreifen. In diesen anderen Ansichten zeige ich die NavBar mit:

self.navigationController?.isNavigationBarHidden = false

Mein Problem ist das:

  • Wenn ich von einer Ansicht mit sichtbarer NavBar aus zu der FirstView mit der ausgeblendeten NavBar navigiere, ist die NavBar jetzt sichtbar . Grundsätzlich verbirgt die NavBar nur das allererste Mal und zeigt dann an, ob ich die Zurück-Schaltfläche verwende.

Wie kann ich das verhindern?

Vielen Dank!

6

Verschieben Sie diesen Code in viewWillAppear() anstelle von viewDidLoad().

viewDidLoad() wird nur einmal pro instanziierter View-Controller aufgerufen, wohingegen viewWillAppear() aufgerufen wird, wenn der View-Controller auf dem Bildschirm angezeigt wird.

Weitere Informationen zum View Controller-Lebenszyklus finden Sie hier .

7
Eggsalad

Schreiben Sie den folgenden Code in Ihre FirstViewController 's viewWillAppear -Methode.

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

Und in Ihre SecondViewController 's viewWillAppear - Methode schreiben Sie unten den Code

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

Versuchen Sie nicht, die Navigationsleiste in viewWillAppear und viewWillDisappear subsequetly in FirstViewController auszublenden und anzuzeigen.

3
Balaji Galave

Mit dieser Funktion können Sie die Navigationsleiste mit coolen Animationen ausblenden:

 func setupAnimationForNavigationBar(caseOfFunction: Bool) {
    if caseOfFunction == true {
        UIView.animate(withDuration: 0.5) {
            self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)
        }
    } else {
        UIView.animate(withDuration: 0.5, animations: {
            self.navigationController?.navigationBar.transform = CGAffineTransform.identity
        })
    }

}

Wenn Sie die Navigationsleiste ausblenden möchten, setzen Sie sie auf "True" und wenn Sie die Navigationsleiste erneut aufrufen möchten, setzen Sie sie auf "False".

1