xyz-log.
トップへ戻る
Tech / 2025.12.28 2025.12.28 / 1 分 ...

完全に理解する Storyboard & UIKit (Day 9): Navigation Controllerの活用

S7r1n9y

S7r1n9y

Engineer

完全に理解する Storyboard & UIKit
9 / 30
このシリーズの記事一覧
  1. 1. 完全に理解する Storyboard & UIKit (Day 1): 基礎概念と歴史
  2. 2. 完全に理解する Storyboard & UIKit (Day 2): XcodeでのStoryboardの基本操作
  3. 3. 完全に理解する Storyboard & UIKit (Day 3): UIViewControllerのライフサイクル
  4. 4. 完全に理解する Storyboard & UIKit (Day 4): Auto Layoutの基本原理
  5. 5. 完全に理解する Storyboard & UIKit (Day 5): Auto Layoutの複雑な制約の解決
  6. 6. 完全に理解する Storyboard & UIKit (Day 6): UIStackViewを使った効率的なレイアウト設計
  7. 7. 完全に理解する Storyboard & UIKit (Day 7): Size Classesによるレスポンシブデザイン
  8. 8. 完全に理解する Storyboard & UIKit (Day 8): Segueによる画面遷移とデータ渡し
  9. 9. 完全に理解する Storyboard & UIKit (Day 9): Navigation Controllerの活用
  10. 10. 完全に理解する Storyboard & UIKit (Day 10): Tab Bar Controllerの活用
  11. 11. 完全に理解する Storyboard & UIKit (Day 11): 基本的なUI部品(UILabel, UIButton, UITextField)
  12. 12. 完全に理解する Storyboard & UIKit (Day 12): UITextViewとキーボードハンドリング
  13. 13. 完全に理解する Storyboard & UIKit (Day 13): UIImageViewと画像リソース管理
  14. 14. 完全に理解する Storyboard & UIKit (Day 14): UIScrollViewとコンテンツのスクロール
  15. 15. 完全に理解する Storyboard & UIKit (Day 15): UITableViewの実装基礎
  16. 16. 完全に理解する Storyboard & UIKit (Day 16): UITableViewのカスタムセル作成
  17. 17. 完全に理解する Storyboard & UIKit (Day 17): UICollectionViewの実装基礎
  18. 18. 完全に理解する Storyboard & UIKit (Day 18): UICollectionViewのカスタムレイアウト
  19. 19. 完全に理解する Storyboard & UIKit (Day 19): Custom Viewの作成とStoryboardでの利用(@IBDesignable, @IBInspectable)
  20. 20. 完全に理解する Storyboard & UIKit (Day 20): アニメーションの実装(UIView Animation)
  21. 21. 完全に理解する Storyboard & UIKit (Day 21): Gesture Recognizerによるタッチ処理
  22. 22. 完全に理解する Storyboard & UIKit (Day 22): UIAlertControllerによるアラートとアクションシート
  23. 23. 完全に理解する Storyboard & UIKit (Day 23): UIDatePickerやUIPickerViewの実装
  24. 24. 完全に理解する Storyboard & UIKit (Day 24): Storyboard Referenceを用いたStoryboard分割
  25. 25. 完全に理解する Storyboard & UIKit (Day 25): XIBとStoryboardの使い分け・併用
  26. 26. 完全に理解する Storyboard & UIKit (Day 26): UIAppearanceによるアプリ全体の色・スタイル管理
  27. 27. 完全に理解する Storyboard & UIKit (Day 27): ダークモード対応とアセットカタログ
  28. 28. 完全に理解する Storyboard & UIKit (Day 28): Accessibility(VoiceOver対応など)のUI設計
  29. 29. 完全に理解する Storyboard & UIKit (Day 29): UIKitからSwiftUIへの移行 / UIKitでのSwiftUI利用
  30. 30. 完全に理解する Storyboard & UIKit (Day 30): 実践:1つのアプリをStoryboardとUIKitで完成させる
完全に理解する Storyboard & UIKit (Day 9): Navigation Controllerの活用

Sponsored

完全に理解する Storyboard & UIKit (Day 9): Navigation Controllerの活用

Day 8でSegueを使った画面遷移を学びましたが、標準の「Show」Segueを使っても、下からモーダルで表示されるだけで「右からスライドして入り、左上の< Backで戻る」というお馴染みの動きになりませんでした。

これは、履歴を管理する箱である UINavigationController が存在しないためです。


1. UINavigationController とは?

UINavigationController は、他のViewControllerを管理するための特別なコンテナ(入れ物)ViewControllerです。

データを管理する構造として スタック(LIFO: 後入れ先出し) を使用します。

  • 画面を被せる(遷移する)処理を Push(プッシュ) と呼びます。
  • 画面を取り除く(戻る)処理を Pop(ポップ) と呼びます。

主な役割

  1. ナビゲーションバーの提供: 画面上部の帯(NavigationBar)を表示し、タイトルや戻るボタンを自動生成します。
  2. 履歴の保持: 今までにPushされた画面の順序をメモリに保持し、正常な「戻る」ルーティングを保証します。

2. Storyboardでの導入方法

Storyboardへの導入は驚くほど簡単です。これだけのために新しいコードは不要です。

  1. アプリの起点となる(最初の)ViewControllerを選択します。
  2. メニューバーから Editor > Embed In > Navigation Controller を選択します。
  3. 自動的にNavigation Controllerがキャンバスに追加され、元の画面の表示領域上部にナビゲーションバーが現れます。

これだけで導入完了です! この状態で、Day 8で設定した「Show」のSegueを再度実行してみてください。今度は下からではなく、右から華麗にスライドインし、左上には元の画面に戻るための < ボタンが自動生成されるはずです。


3. ナビゲーションバーのカスタマイズ(Storyboard)

タイトルの設定

ナビゲーションバーの中央にタイトルを表示したい場合は、各ViewController上のナビゲーションバー部分にあたる Navigation Item をクリック(またはドキュメントアウトラインから選択)し、Attributes Inspectorで Title を入力します。

Large Title(ラージタイトル)

iOS 11から導入された、画面をスクロールすると縮む大きな太字タイトルの設定です。

  1. 一番大元にある Navigation Controller を選択します。
  2. ナビゲーションバー部分をクリックします(または Navigation Bar を選択)。
  3. Attributes Inspectorで Prefers Large Titles にチェックを入れます。

Bar Button Item(ボタンの追加)

「保存」「+(追加)」といったボタンをバーの右端・左端に配置できます。

  1. ライブラリパネル(⇧⌘L)から Bar Button Item をドラッグし、ナビゲーションバーの右側か左側にドロップします。
  2. System Itemを AddTrash 等に変更すると、システム標準のアイコンが利用できます。

4. コードでの制御 (Push / Pop)

Segueを使わずにコード上でナビゲーションの階層を操作することもよくあります。 その場合、各ViewControllerが持っている navigationController プロパティ経由で操作します。

Push (新しい画面へ進む)

Segueを使わない場合の画面遷移コードです。

swift
@IBAction func goNextButtonTapped(_ sender: UIButton) { // 1. StoryboardからViewControllerのインスタンスを生成 let storyboard = UIStoryboard(name: "Main", bundle: nil) guard let detailVC = storyboard.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController else { return } // データ渡し detailVC.selectedItemName = "Apple" // 2. NavigationControllerにPushしてもらう self.navigationController?.pushViewController(detailVC, animated: true) }

Pop (前の画面に戻る)

ユーザーが左上の「戻る」ボタンを押したとき以外にも、保存処理が完了したタイミング等にコードで画面を消したい場合に使します。

swift
@IBAction func saveButtonTapped(_ sender: UIButton) { // データを保存する処理... // 1つ前の画面に戻る self.navigationController?.popViewController(animated: true) } func cancelToTop() { // 先頭の画面(一番最初の画面)まで一気に戻る self.navigationController?.popToRootViewController(animated: true) }

📝 今日のまとめ

  • UINavigationController は、複数の画面を「スタック」として階層管理するコンテナ。
  • Storyboard上で Editor > Embed In から一発で導入できる。
  • 導入すると、画面上部にナビゲーションバーと「戻る」ボタンが自動付与される。
  • コードで遷移・戻る場合は pushViewControllerpopViewController を使う。

階層的な「奥へ進む」遷移ができるようになりました。 しかし、iOSアプリのナビゲーションにはもう一つ重要なパターンがあります。画面下部にアイコンが並ぶ「タブ」構造です。 明日の Day 10 では、UITabBarController を使った並列ナビゲーションについて学びます。

END OF FILE
この記事は役に立ちましたか?
SNSでシェアする
後で読む(ブックマーク)
完全に理解する Storyboard & UIKit
9 / 30
このシリーズの記事一覧
  1. 1. 完全に理解する Storyboard & UIKit (Day 1): 基礎概念と歴史
  2. 2. 完全に理解する Storyboard & UIKit (Day 2): XcodeでのStoryboardの基本操作
  3. 3. 完全に理解する Storyboard & UIKit (Day 3): UIViewControllerのライフサイクル
  4. 4. 完全に理解する Storyboard & UIKit (Day 4): Auto Layoutの基本原理
  5. 5. 完全に理解する Storyboard & UIKit (Day 5): Auto Layoutの複雑な制約の解決
  6. 6. 完全に理解する Storyboard & UIKit (Day 6): UIStackViewを使った効率的なレイアウト設計
  7. 7. 完全に理解する Storyboard & UIKit (Day 7): Size Classesによるレスポンシブデザイン
  8. 8. 完全に理解する Storyboard & UIKit (Day 8): Segueによる画面遷移とデータ渡し
  9. 9. 完全に理解する Storyboard & UIKit (Day 9): Navigation Controllerの活用
  10. 10. 完全に理解する Storyboard & UIKit (Day 10): Tab Bar Controllerの活用
  11. 11. 完全に理解する Storyboard & UIKit (Day 11): 基本的なUI部品(UILabel, UIButton, UITextField)
  12. 12. 完全に理解する Storyboard & UIKit (Day 12): UITextViewとキーボードハンドリング
  13. 13. 完全に理解する Storyboard & UIKit (Day 13): UIImageViewと画像リソース管理
  14. 14. 完全に理解する Storyboard & UIKit (Day 14): UIScrollViewとコンテンツのスクロール
  15. 15. 完全に理解する Storyboard & UIKit (Day 15): UITableViewの実装基礎
  16. 16. 完全に理解する Storyboard & UIKit (Day 16): UITableViewのカスタムセル作成
  17. 17. 完全に理解する Storyboard & UIKit (Day 17): UICollectionViewの実装基礎
  18. 18. 完全に理解する Storyboard & UIKit (Day 18): UICollectionViewのカスタムレイアウト
  19. 19. 完全に理解する Storyboard & UIKit (Day 19): Custom Viewの作成とStoryboardでの利用(@IBDesignable, @IBInspectable)
  20. 20. 完全に理解する Storyboard & UIKit (Day 20): アニメーションの実装(UIView Animation)
  21. 21. 完全に理解する Storyboard & UIKit (Day 21): Gesture Recognizerによるタッチ処理
  22. 22. 完全に理解する Storyboard & UIKit (Day 22): UIAlertControllerによるアラートとアクションシート
  23. 23. 完全に理解する Storyboard & UIKit (Day 23): UIDatePickerやUIPickerViewの実装
  24. 24. 完全に理解する Storyboard & UIKit (Day 24): Storyboard Referenceを用いたStoryboard分割
  25. 25. 完全に理解する Storyboard & UIKit (Day 25): XIBとStoryboardの使い分け・併用
  26. 26. 完全に理解する Storyboard & UIKit (Day 26): UIAppearanceによるアプリ全体の色・スタイル管理
  27. 27. 完全に理解する Storyboard & UIKit (Day 27): ダークモード対応とアセットカタログ
  28. 28. 完全に理解する Storyboard & UIKit (Day 28): Accessibility(VoiceOver対応など)のUI設計
  29. 29. 完全に理解する Storyboard & UIKit (Day 29): UIKitからSwiftUIへの移行 / UIKitでのSwiftUI利用
  30. 30. 完全に理解する Storyboard & UIKit (Day 30): 実践:1つのアプリをStoryboardとUIKitで完成させる
Related Articles