es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que NavigationLink se activa cada vez que escribes un carácter en TextField debido a que la vinculación isActive está configurada a $ingredientIsEntered, el cual es establecido como true cuando se presiona Button. Para evitar que esto suceda, puedes configurar la vinculación isActive a false cuando se presione Button. Puedes hacer esto agregando la siguiente línea de código a la acción del Button:

    ingredientIsEntered = false
    

    Esto asegurará que NavigationLink solo se active cuando se presiona Button.

Comments are closed.