通过子视图循环找不到自定义文本字段类...?

时间:2017-12-09 22:48:27

标签: swift uitextfield

我试图在用户点击“注册”后循环浏览子视图。查找并验证所有文本字段。文本字段是自定义类。循环中没有找到任何文本字段。可能是什么问题呢?文本字段添加在界面构建器故事板中,并且已正确设置类

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")
        }
    }

1 个答案:

答案 0 :(得分:0)

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

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

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

let emailTextField: LoginTextField = someTextField

等等...

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

修改完毕后

你已经拥有了这些属性。那你为什么要经历任何事情呢?

只需检查属性。