0

NavigationView を使用して 3 つ以上のビューでプログラム ナビゲーションを行う方法はありますか?

このような:View 1 -> View 2 -> View 3

これは私がやろうとしていることのサンプルコードです:

class Coordinator: ObservableObject {
    @Published var selectedTag: String?
}

struct ContentView: View {
    @EnvironmentObject var coordinator: Coordinator

    let things = ["first", "second", "third"]

    var body: some View {
        NavigationView {
            List(things, id: \.self) { thing in
                NavigationLink(destination: SecondView(thing: thing),
                               tag: thing,
                               selection: self.$coordinator.selectedTag) {
                    Text(thing)
                }
            }
        }
    }
}

struct SecondView: View {
    @EnvironmentObject var coordinator: Coordinator

    let thing: String
    let things = ["fourth", "fifth", "sixth"]

    var body: some View {
        List(things, id: \.self) { thing2 in
            NavigationLink(destination: ThirdView(thing: self.thing, thing2: thing2),
                           tag: thing2,
                           selection: self.$coordinator.selectedTag) {
                Text(thing2)
            }
        }
    }
}

struct ThirdView: View {
    let thing: String
    let thing2: String

    var body: some View {
        Text("\(thing) \(thing2)")
    }
}

特定のタグを選択して ThirdView に深く移動できることを望んでいましたが、単純なナビゲーションでさえ機能しません。SecondView でリンクを選択すると、期待どおりに前方に移動するのではなく、前方に移動してから後方に移動します。

また、各画面のタグを表す 2 つの変数を使用してみましたが、機能しません。

これを機能させる方法はありますか?私は何か間違ったことをしていますか?

4

1 に答える 1