Swift - validating UITextField

后端 未结 5 1514
梦谈多话
梦谈多话 2020-11-30 11:58

I have these outlets in my app:

@IBOutlet var name1: UITextField!

@IBOutlet var name2: UITextField!

@IBOutlet var name3: UITextField!

@IBOutlet var name4:         


        
5条回答
  •  死守一世寂寞
    2020-11-30 12:41

    Swift 4 - Here is how I have solved it trying to avoid long conditionals - This will also allow you to do realtime validation on each individual textfield, unlike the accepted answer, you can update your UI according to what the user is typing.

    let textfields : [UITextField] = [name1, name2, name3, name4]
    for textfield in textfields {
      textfield.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
    }
    
    
    @objc func textFieldDidChange(_ textField: UITextField) {
      //set Button to false whenever they begin editing
      yourButton.isEnabled = false
      guard let first = textFields[0].text, first != "" else {
            print("textField 1 is empty")
            return
        }
        guard let second = textFields[1].text, second != "" else {
            print("textField 2 is empty")
            return
        }
        guard let third = textFields[2].text, third != "" else {
            print("textField 3 is empty")
            return
        }
        guard let forth = textFields[3].text, forth != "" else {
            print("textField 4 is empty")
            return
        }
        // set button to true whenever all textfield criteria is met.
        yourButton.isEnabled = true
    
    }
    

提交回复
热议问题