可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
How can I hide a navigation bar from first ViewController or a particular ViewController in swift?
I used the following code in viewDidLoad()
:
override func viewDidLoad() { super.viewDidLoad() self.navigationController?.isNavigationBarHidden = true }
and also on viewWillAppear
:
override func viewWillAppear(animated: Bool) { self.navigationController?.isNavigationBarHidden = true }
Both methods hide the navigation controller from all ViewControllers.
回答1:
If you know that all other views should have the bar visible, you could use viewWillDisappear
to set it to visible again.
回答2:
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) }
回答3:
You can unhide 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) }
回答4:
You could also create an extension for this so you will be able to reuse the extension without implementing this again and again in every 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 you can use the extension methods as below
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) hideNavigationBar() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) showNavigationBar() }
回答5:
In Swift 3, you can use isNavigationBarHidden Property also to show or hide navigation bar
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; }
回答6:
You can do it from the window controller (Swift3)
class WindowController: NSWindowController { override func windowDidLoad() { super.windowDidLoad() window?.titleVisibility = .hidden } }