本文へスキップ
BecomeCoder

Swift(iOSアプリ)コース · 第7章 リストと画面遷移 ― 実アプリの形 · レッスン30

NavigationStack ― 画面を移動する

ブラウザで完結

導入

一覧をタップして詳細へ。アプリの「奥へ進む」動きを担うのが NavigationStackNavigationLink です。上部のタイトルバーもここで付きます。

説明

一覧全体を NavigationStack { ... } で包み、.navigationTitle("...") で画面のタイトルを付けます。行を NavigationLink にすると、タップで次の画面へ進めます。

struct ContentView: View {
    var body: some View {
        NavigationStack {
            List {
                NavigationLink("プロフィール") {
                    Text("プロフィール画面")
                }
                NavigationLink("通知設定") {
                    Text("通知設定画面")
                }
                NavigationLink("ヘルプ") {
                    Text("ヘルプ画面")
                }
            }
            .navigationTitle("設定")
        }
    }
}
  • NavigationStack { ... } … 画面移動の入れ物。
  • .navigationTitle("設定") … 上部に表示される大きなタイトル。
  • NavigationLink("ラベル") { 移動先のView } … タップで { } の中の画面へ進む。行の右端に「›」が付きます。

実機やシミュレータでは、タップすると横からスッと詳細画面が現れ、左上の「‹ 戻る」で戻れます。この積み重ね(スタック)で、アプリの画面遷移を組み立てます。

やってみよう

.navigationTitle のタイトルを変えて、上部の見出しが変わるのを確かめましょう。NavigationLink の行を足して、メニューを増やしてみてください。

演習

.navigationTitle を「マイページ」に変えて表示してください。

ヒント1を見る

.navigationTitle("マイページ") に書き換えます。

ヒント2を見る

NavigationStack の中の List に付けます。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Swift / SwiftUI — ブラウザ内で実行(学習用)

Swiftの教材サブセットを動かす学習用ランナーを読み込みます。ふつうのコードは print の出力を表示し、SwiftUI(struct: View)を書くと右にiPhone風のライブプレビューを描画します(本物のXcode/Swiftコンパイラではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。