現象
拖曳 Bar Button Item 到 Navigation Bar 卻跑到 Toolbar,或出現兩個 Navigation Bar。
正確操作流程
- 在 Storyboard 中選中**目標 View Controller**(而非 Navigation Controller)。
- 菜單 Editor → Embed In → Navigation Controller**。系統自動建立 Navigation Controller 並設為初始場景(若非初始需手動勾選 Is Initial View Controller)。
- 此時該 View Controller 頂部會出現 **Navigation Bar**(屬於 Navigation Controller 管理)。
- 直接從 Object Library 拖曳 Bar Button Item 到 **這個 Navigation Bar** 上(左/右/中)。
- 屬性檢查器設定 Title/Image/Action,或建立
@IBOutlet/@IBAction 連線。
常見誤區
- 手動拖一個 Navigation Bar 到 View Controller 頂部 → 產生兩個 Bar(一個來自 Embed,一個手動)。
- 拖 Button 到 Toolbar(底部條)而非 Navigation Bar(頂部條)。
- 未 Embed Navigation Controller 直接在無 Navigation Bar 的場景加按鈕。
程式碼建立對照
// 在前一個 VC push 時
let vc = storyboard.instantiateViewController(identifier: "TargetVC")
navigationController?.pushViewController(vc, animated: true)
// TargetVC 會自動顯示 Navigation Bar(繼承自 push 過程)
// 在 TargetVC viewDidLoad 設定按鈕
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "字體", style: .plain, target: self, action: #selector(fontTapped))