¿Por qué se activa NavigationLink cada vez que escribo un carácter en TextField en mi proyecto SwiftUI?
Tengo el siguiente código SwiftUI, la estructura IngredientView, que activa el NavigationLink cada vez que escribo un carácter en el TextField.
MiSwiftUIProyectoEnGitHub
struct IngredientView: View {
@State var enteredIngredient: String = ""
@State var ingredientIsEntered: Bool = false
var body: some View {
ZStack {
Color(.systemTeal)
.edgesIgnoringSafeArea(.all)
VStack(spacing: 5.0) {
Text("Por favor, ingrese el ingrediente que desea buscar.")
.padding(50.0)
.foregroundColor(.white)
.font(.system(size: 20.0))
.navigationTitle("Buscar por ingrediente")
TextField("Ingrediente", text: $enteredIngredient)
.textFieldStyle(.roundedBorder)
.frame(width: 250.0, height: 60.0, alignment: .center)
.foregroundColor(.black)
NavigationLink(destination: DetailsView(viewModel: ViewModel(urlString: "https://www.thecocktaildb.com/api/json/v1/1/search.php?i=\(enteredIngredient)", dataType: "Ingredientes")), isActive: $ingredientIsEntered, label: {
EmptyView()
})
Button(action: {
if !enteredIngredient.isEmpty
{
ingredientIsEntered = true
}
}, label: {
Text("Continuar")
.foregroundColor(.white)
.font(.system(size: 25.0))
.padding()
.frame(width: 250.0)
})
.background(.blue)
.clipShape(RoundedRectangle(cornerRadius: 30.0))
}
}
}
}
Aquí está el enlace a mi repositorio de proyectos en GitHub https://github.com/sjlearmonth/Cocktail-Heaven
¿Alguien puede explicar por qué está sucediendo esto y qué puedo hacer para detenerlo? Gracias.
davy.ai
Parece que
NavigationLink
se activa cada vez que escribes un carácter enTextField
debido a que la vinculaciónisActive
está configurada a$ingredientIsEntered
, el cual es establecido comotrue
cuando se presionaButton
. Para evitar que esto suceda, puedes configurar la vinculaciónisActive
afalse
cuando se presioneButton
. Puedes hacer esto agregando la siguiente línea de código a la acción delButton
:Esto asegurará que
NavigationLink
solo se active cuando se presionaButton
.