Wie kann ich eine Navigationsleiste vor dem ersten ViewController oder einem bestimmten ViewController schnell ausblenden?
Ich habe den folgenden Code in viewDidLoad()
verwendet:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.isNavigationBarHidden = true
}
und auch auf viewWillAppear
:
override func viewWillAppear(animated: Bool) {
self.navigationController?.isNavigationBarHidden = true
}
Beide Methoden verbergen den Navigationscontroller vor allen ViewControllern.
Wenn Sie wissen, dass für alle anderen Ansichten die Leiste sichtbar sein sollte, können Sie sie mit viewWillDisappear
wieder sichtbar machen.
In Swift:
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)
}
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)
}
Sie können navigationController
in viewWillDisappear
einblenden.
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)
}
Sie können hierfür auch eine Erweiterung erstellen, damit Sie die Erweiterung wiederverwenden können, ohne sie in jedem View-Controller immer wieder neu zu implementieren.
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 wie folgt verwenden
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
hideNavigationBar()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
showNavigationBar()
}
In Swift 3 können Sie die isNavigationBarHidden-Eigenschaft auch zum Anzeigen oder Ausblenden der Navigationsleiste verwenden
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;
}
So zeigen Sie die Navigationsleiste in Swift an:
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.isNavigationBarHidden = false
Möglichkeiten, die Navigationsleiste in Swift auszublenden:
self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true
Sie können dies über die Fenstersteuerung (Swift3) tun.
class WindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
window?.titleVisibility = .hidden
}
}
Ich verwende eine Variante des obigen und isoliere Abschnitte meiner App, die in unterschiedliche NavController eingebettet werden sollen. Auf diese Weise muss ich die Sichtbarkeit nicht zurücksetzen. Zum Beispiel sehr nützlich bei Startvorgängen.
In IOS 8 machen Sie es gern
navigationController?.hidesBarsOnTap = true
aber nur wenn es Teil eines UINavigationController ist
machen Sie es falsch, wenn Sie es zurück wollen
private func setupView() {
view.backgroundColor = .white
navigationController?.setNavigationBarHidden(true, animated: false)
}