NavigationStackの使い方

NavigationStackの特徴としてpathを用意して、好きな画面に遷移できるところです。

例えば以下ではHome>画面A>画面B>画面Cに遷移して、画面Cのボタンを選択すると2つ前の画面Aに戻れます。

import SwiftUI

enum Path {
    case screenA, screenB, screenC
}

struct ContentView: View {
    @State private var navigatePath: [Path] = []
    var body: some View {
        NavigationStack(path: $navigatePath) {
            
            VStack {
                Button("画面複数遷移"){
                    navigatePath.append(contentsOf: [.screenA, .screenB, .screenC])
                }
            }
            .navigationDestination(for: Path.self) { value in
                switch value {
                case .screenA:
                    PathView(navigatePath: $navigatePath, text: "A")

                case .screenB:
                    PathView(navigatePath: $navigatePath, text: "B")
                case .screenC:
                    PathView(navigatePath: $navigatePath, text: "C")
                    
                }
            }
        }
    }
}

struct PathView: View{
    @Binding var navigatePath: [Path]
    var text : String
    var body: some View{
        Button("画面\(text)"){
            if navigatePath.count > 2 {
                // 2つ前の画面に戻る
                navigatePath.removeLast(2)
            }
        }
    }
}