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.

Cómo mostrar una alerta en SwiftUI de que el correo electrónico y la contraseña son incorrectos.

Buenas tardes,

Tengo una pregunta, necesito mostrar un error cuando un usuario ingresa un correo electrónico incorrecto o introduce una contraseña incorrecta. ¿Qué necesito agregar en mi código?
Soy nuevo en el desarrollo de software y no estoy muy familiarizado con Swift UI, ¿alguien podría ayudarme?

struct LoginView: View {
    @State var email = ""
    @State var password = ""

    var body: some View {
        Image("ISD-Logo")
            .resizable()
            .aspectRatio(contentMode: .fill)
            .frame(width: 185, height: 140)
            .clipped()
            .padding(.bottom, 75)

        VStack {
            TextField("Email", text: $email)
                .padding()
                .background(Color(UIColor.lightGray))
                .cornerRadius(5.0)
                .padding(.bottom, 20)
            SecureField("password", text: $password)
                .padding()
                .background(Color(UIColor.lightGray))
                .cornerRadius(5.0)
                .padding(.bottom, 20)
            Button(action: { login() }) {
                Text("Sign in")
                    .font(.headline)
                    .foregroundColor(.white)
                    .padding()
                    .frame(width: 220, height: 60)
                    .background(Color.black)
                    .cornerRadius(35.0)
            }
        }
        .padding()
    }

    // Login y mensaje de error
    func login() {
        Auth.auth().signIn(withEmail: email, password: password) { (result, error) in
            if error != nil {
                print(error?.localizedDescription ?? "")
            } else {
                print("éxito")
            }
        }
    }
}

struct LoginView_Previews: PreviewProvider {
    static var previews: some View {
        LoginView()
    }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar un mensaje de error cuando un usuario ingresa un correo electrónico o contraseña incorrectos, puedes agregar una variable de mensaje de error opcional y usarla para mostrar una alerta en tu código. Aquí hay una modificación de ejemplo para tu código:

    import SwiftUI
    import Firebase
    
    struct LoginView: View {
        @State var email = ""
        @State var password = ""
        @State var errorMessage: String? = nil // nuevo
    
        var body: some View {
            Image("ISD-Logo")
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: 185, height: 140)
                .clipped()
                .padding(.bottom, 75)
    
            VStack {
                TextField("Correo electrónico", text: $email)
                    .padding()
                    .background(Color(UIColor.lightGray))
                    .cornerRadius(5.0)
                    .padding(.bottom, 20)
                SecureField("Contraseña", text: $password)
                    .padding()
                    .background(Color(UIColor.lightGray))
                    .cornerRadius(5.0)
                    .padding(.bottom, 20)
                Button(action: { login() }) {
                    Text("Iniciar sesión")
                        .font(.headline)
                        .foregroundColor(.white)
                        .padding()
                        .frame(width: 220, height: 60)
                        .background(Color.black)
                        .cornerRadius(35.0)
                }
            }
            .padding()
            // nuevo
            .alert(item: $errorMessage) { mensaje in
                Alert(title: Text("Error"), message: Text(mensaje), dismissButton: .default(Text("OK")))
            }
        }
    
        func login() {
            Auth.auth().signIn(withEmail: email, password: password) { (result, error) in
                if let error = error {
                    print(error.localizedDescription)
                    errorMessage = "Correo electrónico o contraseña incorrectos." // nuevo
                } else {
                    print("Éxito")
                }
            }
        }
    }
    
    struct LoginView_Previews: PreviewProvider {
        static var previews: some View {
            LoginView()
        }
    }
    

    En esta modificación, se agregó una nueva variable de estado errorMessage, que inicialmente es nil. Luego, se modificó la función login para asignar a errorMessage un mensaje específico si hay un error durante el inicio de sesión. Finalmente, se agregó una alerta en la vista que muestra el mensaje de error si no es nil. La función alert toma un elemento opcional y solo muestra la alerta si el elemento no es nil.

Comments are closed.