tutorial the programming objective language curso apple ios swift uinavigationcontroller uinavigationbar

ios - the - ¿Cómo ocultar una barra de navegación desde el primer ViewController en Swift?



the swift programming language pdf (11)

En iOS 8 hazlo como

navigationController?.hidesBarsOnTap = true

pero solo cuando es parte de un UINavigationController

hazlo falso cuando lo quieras de vuelta

¿Cómo puedo ocultar una barra de navegación desde el primer ViewController o un ViewController particular en Swift?

viewDidLoad() el siguiente código en viewDidLoad() :

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

y también en viewWillAppear :

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

Ambos métodos ocultan el controlador de navegación de todos los ViewControllers.


En Swift 3, puede usar la propiedad isNavigationBarHidden también para mostrar u ocultar la barra de navegación

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


Formas de mostrar la barra de navegación en Swift:

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


Formas de ocultar la barra de navegación en Swift:

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


Puede mostrar navigationController en 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) }


Puedes hacerlo desde el controlador de ventana (Swift3)

class WindowController: NSWindowController { override func windowDidLoad() { super.windowDidLoad() window?.titleVisibility = .hidden } }


Si sabe que todas las demás vistas deben tener la barra visible, puede usar viewWillDisappear para viewWillDisappear a ver.

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


También puede crear una extensión para esto para poder reutilizar la extensión sin implementar esto una y otra vez en cada controlador de vista.

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

Entonces puede usar los métodos de extensión como se muestra a continuación

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


Utilizo una variante de lo anterior y aíslo secciones de mi aplicación para incorporarlas a diferentes NavControllers. De esta manera, no tengo que restablecer la visibilidad. Muy útil en secuencias de inicio, por ejemplo.


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