我试图在用户点击“注册”后循环浏览子视图。查找并验证所有文本字段。文本字段是自定义类。循环中没有找到任何文本字段。可能是什么问题呢?文本字段添加在界面构建器故事板中,并且已正确设置类
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")
}
}
答案 0 :(得分:0)
虽然我不打算特别回答你的问题,但我会提供一个(更好的)替代方案。
不要在视图上使用标签......它们的使用鼓励了非常糟糕的模式。就像循环浏览视图以获取电子邮件文本字段一样。
相反,您应该为每个文本字段创建一个属性。
let emailTextField: LoginTextField = someTextField
等等...
这样你就不需要循环了。您只需检查电子邮件文本字段,然后检查密码文本字段,依此类推。
修改完毕后
你已经拥有了这些属性。那你为什么要经历任何事情呢?
只需检查属性。