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