Am de lucru pe un proiect care încearcă să prezinte și să respingă opinii într-un NavigationView ajutorul de stat și obligatorii. Motivul pentru care fac asta este că există un bug în @Mediu(.presentationMode) var presentaionMode: Obligatoriu model. Aceasta cauzează un comportament ciudat. E de discutat in acest post aici.
Exemplul de mai jos are trei puncte de vedere care se încarcă progresiv cu privire la punctul de vedere. Primele două ContentView să NavView1 prezent și respingerea perfect. Cu toate acestea, odată ce NavView2 este încărcat, buton care este folosit pentru a comuta starea de presentNavView2 se termină adăugarea un alt NavView2 vedere pe stivă și nu respingerea cum era de așteptat. Vreo idee de ce ar fi?
ContentView
struct ContentView: View {
@State private var presentNavView1 = false
var body: some View {
NavigationView {
List {
NavigationLink(destination: NavView1(presentNavView1: self.$presentNavView1), isActive: self.$presentNavView1, label: {
Button(action: {
self.presentNavView1.toggle()
}, label: {
Text("To NavView1")
}) // Button
}) // NavigationLink
} // List
.navigationTitle("Home")
} // NavigationView
} // View
}
NavView1
struct NavView1: View {
@State private var presentNavView2 = false
@Binding var presentNavView1: Bool
var body: some View {
List {
NavigationLink(destination: NavView2(presentNavView2: self.$presentNavView2), isActive: self.$presentNavView2, label: {
Button(action: {
self.presentNavView2.toggle()
}, label: {
Text("To NavView2")
}) // Button
}) // NavigationLink
Button(action: {
self.presentNavView1.toggle()
}, label: {
Text("Back")
})
} // List
.navigationTitle("NavView1")
} // View
}
NavView2
struct NavView2: View {
@Binding var presentNavView2: Bool
var body: some View {
VStack {
Text("NavView2")
Button(action: {
self.presentNavView2.toggle()
}, label: {
Text("Back")
}) // Button
} // VStack
.navigationTitle("NavView2")
}
}