iOS 16 用 NavigationStack (旧 NavigationView)

Apr 26 2023
アプリの最小展開ターゲットが iOS 16、iPadOS 16、macOS 13、tvOS 16、または watchOS 9 以降である場合は、NavigationView の使用から移行してください。代わりに、NavigationStack インスタンスと NavigationSplitView インスタンスを使用します。

アプリの最小展開ターゲットが iOS 16、iPadOS 16、macOS 13、tvOS 16、または watchOS 9 以降である場合は、 の使用から移行してくださいNavigationView。代わりに、NavigationStackNavigationSplitViewインスタンス を使用します。

ScrollViewを下にスクロールするとステータスバーがコンテンツに重なって表示されます。

コンテンツとステータスバーが重ならないようにするには、上部にナビゲーションを追加する必要があります。2022 年の更新後、NavigationView は NavigationStack と NavigationSplitView に移行します。

NavigationStack を使用してこれらのナビゲーション バーを表示する簡単な方法は次のとおりです。

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationStack {
            ScrollView {
                Text("The area is...")
            }
        }
        .navigationTitle("Navigation")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
//This is just for the preview
        NavigationStack { 
            ContentView()
        }
    }
}

しかし、私が抱えていた問題は、ナビゲーションのタイトルが不要な場合はどうするかということです。

以下のチュートリアルの例では、以前の NavigationView ではタイトルがなくても正常に動作していたようです。

また、NavigationStack を ContentView に追加しても機能しませんでした。

Appでも書いてようやく表示されることを確認しました。

import SwiftUI

@main
struct TrekrApp: App {
    var body: some Scene {
        WindowGroup {
            NavigationStack {
                ContentView()
            }
        }
    }
}