前編に引き続きNavigationViewの解説をしていきます。
前回はこちら↓
navigationTitleモディファイア
NavigationViewにタイトルをつけることができるモディファイア。
公式リファレンス↓
実際の動作
一つ目と二つ目のソースコードの差は__navigationTitleをつけたかどうか__だけです。
実際のソースコードを見てみましょう。
ソースコード
import SwiftUI
struct ContentView: View {
    
    let regions = ["カントー地方", "ジョウト地方", "ホウエン地方", "シンオウ地方"]
    
    var body: some View {
        VStack{
            // ここから
            HStack{
                Spacer()
                Button(action: {}, label: {
                    Text("ヘルプ")
                })
            }
            .padding(.horizontal)
            // ここまではNavigationViewに含まれない
            
            NavigationView {
                List(0..<4) { n in
                    NavigationLink(regions[n], destination: Region(id: n, regionName: regions[n]))
                }
                .navigationTitle("そらをとぶ") //ここでタイトルをつけている
            }
        }
    }
}
 .navigationTitleというコードのみで、フォントの大きさや太さをタイトルっぽくしてくれます。
navigaitonTitleには次のような機能もあります。
「もどる」ボタンの名前になる
このように、__前の画面にもどるためのボタンの名前__として、navigationTitleがそのまま使われます。
また、画面遷移のときにアニメーションも自動でつけてくれます。(動画参照)
navigationTitleはどこに書く?
よくある間違い(主に私が)として、次のように書くパターンがあります。
            NavigationView {
                List(0..<4) { n in
                    NavigationLink(regions[n], destination: Region(id: n, regionName: regions[n]))
                }
//                .navigationTitle("そらをとぶ") //本来はここに書く
            }
            .navigationTitle("そらをとぶ") //NavigationViewの外側に書いている
このように書くと、エラーにはなりませんがタイトルは表示されなくなります。
navigationTitleはそもそも、ひとつの画面のタイトルでしかないため、遷移先には引き継がれません。各画面でnavigationTitleをつけることになります。
よって、__navigationTitleはNavigationViewの内側に書くものだ__と認識すると良いでしょう。
参考文献



