遍历子视图未找到自定义文本字段 class...?

loop through subviews not finding custom text field class...?

我正在尝试在用户点击 'sign up' 查找并验证所有文本字段后遍历子视图。文本字段是自定义的 class。在循环中找不到文本字段。可能是什么问题呢?文本字段已添加到界面生成器故事板中,并且 class 已正确设置

viewController 的网点:

@IBOutlet weak var usernameTextField: LoginTextFields!
@IBOutlet weak var emailTextField: LoginTextFields!
@IBOutlet weak var passwordTextField: LoginTextFields!
@IBOutlet weak var confirmTextField: LoginTextFields!

我试过了:

   private func validateTF() {
   print("validate")

    for view in self.view.subviews {
        if let tf = view as? LoginTextFields {
            print("found one")
            if tf.isEmpty(){
                //alert
            } else if tf.tag == 2 && !tf.isValidEmail(email: emailTextField.text!) {
                //alert
            }
        }
    }
}

我也试过:

  for view in self.view.subviews {
        print(view)
        if view.isKind(of: LoginTextFields.self) {
            print("tf found")
            let tf = view as! LoginTextFields
            if tf.isEmpty() {
                //alert
            } else if tf.tag == 2 && !tf.isValidEmail(email: emailTextField.text!) {
                //alert
            }
            print("nps")
        }
    }

虽然我不会具体回答你的问题,但我会提供一个(更好的)替代方案。

永远不要在视图上使用标签......永远。他们的使用鼓励了非常糟糕的模式。就像循环浏览视图以获取电子邮件文本字段一样。

相反,您应该为每个文本字段创建一个 属性。

let emailTextField: LoginTextField = someTextField

等等...

这样你就不需要循环了。您只需检查电子邮件文本字段,然后检查密码文本字段等等。

编辑后...

您已经拥有那里的房产。那你为什么要遍历任何东西?

只需检查属性。