Enable a button in Swift only if all text fields have been filled out

前端 未结 10 717
误落风尘
误落风尘 2020-12-01 01:20

I am having trouble figuring out how to change my code to make it so the Done button in the navigation bar is enabled when my three text fields are filled out.

I cur

10条回答
  •  [愿得一人]
    2020-12-01 01:40

    Swift 5.1 /Xcode 11

    override func viewDidLoad() {
        super.viewDidLoad()
        setupAddTargetIsNotEmptyTextFields()        
    }
    
    func setupAddTargetIsNotEmptyTextFields() {
        okButton.isHidden = true //hidden okButton
        nameUserTextField.addTarget(self, action: #selector(textFieldsIsNotEmpty), 
                                    for: .editingChanged)
        emailUserTextField.addTarget(self, action: #selector(textFieldsIsNotEmpty), 
                                    for: .editingChanged)
        passwordUserTextField.addTarget(self, action: #selector(textFieldsIsNotEmpty), 
                                    for: .editingChanged)
        confimPasswordUserTextField.addTarget(self, action: #selector(textFieldsIsNotEmpty), 
                                    for: .editingChanged)        
       }
    

    and then create the selector method and use guard:

    @objc func textFieldsIsNotEmpty(sender: UITextField) {
    
        sender.text = sender.text?.trimmingCharacters(in: .whitespaces)
    
        guard
          let name = nameUserTextField.text, !name.isEmpty,
          let email = emailUserTextField.text, !email.isEmpty,
          let password = passwordUserTextField.text, !password.isEmpty,
          let confirmPassword = confimPasswordUserTextField.text,
              password == confirmPassword          
          else
        {
          self.okButton.isHidden = true
          return
        }
        // enable okButton if all conditions are met
        okButton.isHidden = false
       }
    

提交回复
热议问题