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 つの変数を使用してみましたが、機能しません。
これを機能させる方法はありますか?私は何か間違ったことをしていますか?