2015-03-23 6 views
126

Wie kann ich eine Navigationsleiste von dem ersten Viewcontroller oder einem bestimmten Viewcontroller in schnellen verbergen?Wie blende ich eine Navigationsleiste vom ersten ViewController in Swift aus?

habe ich den folgenden Code in viewDidLoad():

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

und auch auf viewWillAppear:

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

Beide Methoden der Navigation-Controller aus allen Viewcontrollers verstecken.

+0

müssen Sie es für alle Viewcontrollers manuell verwalten .. Sie es für irgendein nicht tun kann .. – itsji10dra

Antwort

94

sichtbar machen Wenn Sie wissen, dass alle anderen Ansichten, die die Bar sichtbar haben sollten, könnten Sie viewWillDisappear verwenden, um es sichtbar zu setzen nochmal.

+1

Diese Antwort ist effizienter . Denken Sie an den sich wiederholenden Code mit jedem neuen ViewController, den Sie hinzufügen. http://stackoverflow.com/a/39679506/5079380 –

61

Sie können navigationController in 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) 
} 
152

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) 
} 
+2

Mit zwingende vergessen Sie nicht die Super-Methoden aufrufen: super.viewWillAppear (animiert) und super.viewWillDisappear (animiert) – NielsKoole

+0

Jedes mögliches Problem, wenn ich super.viewWillAppear nicht nennen. ..... oder andere super Methode ??? – Athul

+0

guten Code-Schnipsel - danke! es hat gut für mich funktioniert !! – nurxyz

6

In Swift 3 können Sie isNavigationBarHidden Property verwenden auch Navigationsleiste anzeigen oder ausblenden

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; 
} 
0

Sie können es aus dem Fenster Controller tun (swift3)

class WindowController: NSWindowController { 

    override func windowDidLoad() { 
     super.windowDidLoad() 

     window?.titleVisibility = .hidden 
    } 
} 
+3

Was ist der Window Controller? – MBH

7

Sie könnten auch eine Erweiterung für diese erstellen, so können Sie die Erweiterung wieder zu verwenden, ohne die Umsetzung das immer wieder in jedem View-Controller.

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) 
    } 

} 

So können Sie die Erweiterungsmethoden verwenden, wie unten

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

    override func viewWillDisappear(_ animated: Bool) { 
     super.viewWillDisappear(animated) 
     showNavigationBar() 
    } 
+2

Nicht wirklich die Erweiterung wert, oder? :) –

+1

Hängt davon ab, wie viele Ansichten, die Sie versteckt/zeigt die nav Bars. Ich fühle mich wie die meisten Fälle, die Sie nur die erste ausblenden, aber wenn Sie es viel tun, ist die Erweiterung nett. – jnwagstaff

Verwandte Themen