Estoy trabajando en un proyecto que está tratando de presentar y despedir vistas en una vista denavegación con el estado y la unión. La razón por la que estoy haciendo esto es que hay un error en el @Entorno(.presentationMode) var presentaionMode: Enlace modelo. Es provocando un comportamiento extraño. Es discutido en este post aquí.
El ejemplo siguiente tiene tres puntos de vista que son cada vez cargada en la vista. Los dos primeros ContentView a NavView1 presentar y despedir a la perfección. Sin embargo, una vez NavView2 es cargado, el botón que se utiliza para alternar el estado de presentNavView2 termina agregar otro NavView2 ver en la pila y no se descartan como se esperaba. Alguna idea de por qué esto sería?
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")
}
}