NavigationViewにタイトルが表示されない問題

はじめに

ちょっとした勘違いだけれども、しばらく気が付かなかったため、今後のためにメモメモφ(・・。

課題

var body: some View {
    NavigationView {
        ScrollView {
              いろいろ並べる
        }
    }
    .navigationBarTitle("TopPage",displayMode: .large)
}

NavigationViewに対してnavigationBarTitleモディファイアを設定した。
でも、表示されるはずのタイトルが表示されない……

あれれ?

解決

var body: some View {
    NavigationView {
        ScrollView {
              いろいろ並べる
        }
        .navigationBarTitle("TopPage",displayMode: .large)
    }
}

表示されました。

ちょっとだけ考察

SwiftUIのNavigationViewはUIKitでのUINavigationViewControllerにあたります。
UINavigationViewControllerは画面遷移や表示されるUIViewControllerの管理(スタック)をするものです。

ということは、NavigationViewは内包するViewの管理をするだけのものであり、タイトルを管理するものではないということになります。

要はNavigationViewは箱の役割であり、タイトルとViewはセットでNavigationViewに放り込まれて管理されるということです。
navigationBarTitleは、上記のケースのようにNavigationViewではなく内包されるView(ScrollView)に設定することとなります。

なんとなく納得。ほんとになんとな〜く。

ちなみに、navigationBarItemも同様です。

タイトルとURLをコピーしました