首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 隱藏 UINavigationController 導航列

     編輯:程式設計綜合問答

場景

使用 UINavigationController 作為根視圖控制器,但不想顯示頂部導航列。

一行代碼解決

navigationController.isNavigationBarHidden = true
// 或 Objective-C
[navigationController setNavigationBarHidden:YES];

最佳呼叫時機

  • AppDelegate 設定根控制器後:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
    let vc = storyboard.instantiateViewController(withIdentifier: "termsandConditionControl")
    let nav = UINavigationController(rootViewController: vc)
    nav.isNavigationBarHidden = true // 在這裡設定
    window?.rootViewController = nav
    window?.makeKeyAndVisible()
    return true
}
  • 特定 ViewController 的 viewWillAppear:若只有特定頁面需隱藏,並在離開時恢復:
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)
}

常見坑點

❌ 在 viewDidLoad 設定 isNavigationBarHidden 可能被後續 push/pop 動畫覆蓋。
✅ 使用 viewWillAppear/viewWillDisappear 配對管理,並開啟 animated: true 保證轉場平滑。
❌ 忘記在 Storyboard 勾選 Navigation Controller 的 "Shows Navigation Bar",雖代碼可覆蓋,但建議介面建構器與代碼一致。

補充:隱藏導航列但保留狀態列

iOS 13+ 可用 navigationBar.standardAppearance.configureWithTransparentBackground() 實現半透明/隱藏效果,同時保留狀態列內容。

核心記住:UINavigationController 實例方法 setNavigationBarHidden(_:animated:) 是官方標準 API,簡單可靠。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved