Actualizar un valor de enlace vuelve a la vista principal en la pila de navegación.
Estoy pasando un vínculo de una persona desde la primera vista a la segunda vista y luego a la tercera vista. Cuando actualizo el valor del vínculo en la tercera vista, regresa a la segunda vista. Entiendo que SwiftUI actualiza las vistas que dependen del valor del estado, pero ¿es correcto que regrese a la vista actual o estoy haciendo algo mal?
struct Person: Identifiable {
let id = UUID()
var name: String
var numbers = [1, 2]
}
struct FirstView: View {
@State private var people = [Person(name: "Nombre actual")]
var body: some View {
NavigationView {
List($people) { $person in
NavigationLink(destination: SecondView(person: $person)) {
Text(person.name)
}
}
}
}
}
struct SecondView: View {
@Binding var person: Person
var body: some View {
Form {
NavigationLink(destination: ThirdView(person: $person)) {
Text("Actualizar información")
}
}
}
}
struct ThirdView: View {
@Binding var person: Person
var body: some View {
Form {
Button(action: {
person.numbers.append(3)
}) {
Text("Agregar un nuevo número")
}
}
}
}
davy.ai
Sí, este es el comportamiento esperado. Cuando se actualiza el valor de enlace en ThirdView, SecondView se invalida porque depende de ese valor. Esto significa que SecondView se recarga y se vuelve a llamar a su propiedad
body
. Si SecondView tiene un NavigationLink a ThirdView, este enlace ahora estará activo nuevamente y navegará a ThirdView. Por lo tanto, este comportamiento no es un error, sino más bien una característica del marco de trabajo SwiftUI.