首页 > 解决方案 > 如何覆盖 Swift 委托方法以获取更多参数?

问题描述

我有一个带有 3 个 UITextFields 的表单。当用户在该特定字段中输入文本后,我想验证每个字段的用户输入。现在,我有一个方法

validateAllFields()

我打电话给:

func textFieldDidEndEditing(_ textField: UITextField) {
    self.validateAllFields()
}

我宁愿在修改其文本后验证单个字段,而不是在修改每个字段后验证所有字段。

有没有办法覆盖委托方法或扩展 UITextField 以获取更多参数?就像是:

override func textFieldDidEndEditing(_ textField: UITextField,
                       textFieldIdentifier: TextFieldIdentifierEnum) {
    self.validate(textField: textField, basedOn: textFieldIdentifier)
}

我怀疑它可以通过扩展来完成,但我不清楚如何进行。

谢谢您的帮助!

标签: iosswiftcocoa-touchuikit

解决方案


您不必因为参数(_ textField: UITextField)为您提供用户更改的当前文本字段

假设你有

@IBOutlet weak var emailTexf:UITextField!
@IBOutlet weak var passTexf:UITextField!

func textFieldDidEndEditing(_ textField: UITextField) {
  self.validateAllFields(textField)
}
fun validateAllFields(_ current:UITextField) {

   if  emailTexf == current {

   }
   else if passTexf == current {

   } 
   else {  }  // etc
}

推荐阅读