Home > Software design >  Type '()' cannot conform to 'View' on SWIFT
Type '()' cannot conform to 'View' on SWIFT

Time:08-01

I'm getting this error when I try to validate password field under a SecureTextField field.

any thoughts? I did similar with an TextField for Email validation and works just fine! my issue is with the password validation "If"

                HStack {
                
                    TextField("Email Address", text: $loginVM.credentials.email) { isEditing in
                        self.isEditing = isEditing
                        
                        errorMessage = ""
                        ////// == getting  email validation boolean after losing  the focus
                        if  isEditing  == false  {
                            if validateEmail(emailAddressString: loginVM.credentials.email) ==  true {
                                errorMessage = "YES, Email is Good"
                                print(errorMessage)
                                } else {
                                errorMessage = "*-Oops,Something is wrong with your email !!!"
                                print(errorMessage)

                            }
                        }
                       
                    }
                   
                    } .textFieldStyle(MyTextFieldStyle(focused: $isEditing))
                    
                        
                HStack {
                    
                    SecureTextField(text: $loginVM.credentials.password)

                            .padding(10)
                            .focused($isInFocus)
                            .background(
                            RoundedRectangle(cornerRadius: 10, style: .continuous)
                            .stroke(isInFocus ? Color.orange : Color.gray, lineWidth: 1))
                    
                               
                            }.disableAutocorrection(true)
                // Here is where I'm getting this Type '()' cannot conform to 'View'
                            if validatePassword(passwordString: loginVM.credentials.password) ==  true {
                                errorMessage = "YES, Password  OK"
                                print(errorMessage)
                                } else {
                                errorMessage = "*-Oops,Something is wrong with your Password !!!"
                                print(errorMessage)

                            }

CodePudding user response:

you can wrap your logic inside onSubmit.

the compiler expects some View inside the ViewBuilder

SecureTextField(text: $name)
    .padding(10)
    .focused($isInFocus)
    .disableAutocorrection(true)
    .background(
        RoundedRectangle(
            cornerRadius: 10,
            style: .continuous
        )
        .stroke(isInFocus ? Color.orange : Color.gray, lineWidth: 1)
    )
    .onSubmit {
        if validatePassword(passwordString: loginVM.credentials.password) {
            errorMessage = "YES, Password  OK"
            print(errorMessage)
        } else {
            errorMessage = "*-Oops,Something is wrong with your Password !!!"
            print(errorMessage)
        }
    }

the .onSubmit block will execute when the user presses submit button on the keyboard though i would recommend handling this logic inside a view model and execute the logic once everything is set up

  • Related