最初のViewControllerまたは特定のViewControllerからナビゲーションバーを非表示にするにはどうすればよいですか。
私はviewDidLoad()
で次のコードを使いました。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.isNavigationBarHidden = true
}
viewWillAppear
についても同様です。
override func viewWillAppear(animated: Bool) {
self.navigationController?.isNavigationBarHidden = true
}
両方のメソッドとも、すべてのViewControllerからナビゲーションコントローラを隠します。
他のすべてのビューでバーを表示する必要があることがわかっている場合は、viewWillDisappear
を使用して再度表示に設定できます。
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)
}
スイフト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)
}
navigationController
にviewWillDisappear
を表示することができます
override func viewWillDisappear(animated: Bool)
{
super.viewWillDisappear(animated)
self.navigationController?.isNavigationBarHidden = false
}
スイフト3
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: animated)
}
このための拡張を作成することもできます。そのため、すべての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)
}
}
だから、あなたは以下のように拡張メソッドを使用することができます
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
hideNavigationBar()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
showNavigationBar()
}
Swift 3では、isNavigationBarHiddenプロパティを使用してナビゲーションバーを表示または非表示にすることもできます。
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;
}
Swiftでナビゲーションバーを表示する方法:
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.isNavigationBarHidden = false
Swiftでナビゲーションバーを非表示にする方法:
self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true
あなたはウィンドウコントローラからそれをすることができます(Swift3)
class WindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
window?.titleVisibility = .hidden
}
}
私は上記の変種を使用して、異なるNavControllerに埋め込まれるように私のアプリのセクションを分離します。このように、私は可視性をリセットする必要はありません。たとえば、スタートアップシーケンスで非常に便利です。
IOS 8では好きですか
navigationController?.hidesBarsOnTap = true
それが UINavigationControllerの一部になっている場合に限ります
戻したいときはfalseにします
private func setupView() {
view.backgroundColor = .white
navigationController?.setNavigationBarHidden(true, animated: false)
}