遍历子视图未找到自定义文本字段 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
等等...
这样你就不需要循环了。您只需检查电子邮件文本字段,然后检查密码文本字段等等。
编辑后...
您已经拥有那里的房产。那你为什么要遍历任何东西?
只需检查属性。
我正在尝试在用户点击 '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
等等...
这样你就不需要循环了。您只需检查电子邮件文本字段,然后检查密码文本字段等等。
编辑后...
您已经拥有那里的房产。那你为什么要遍历任何东西?
只需检查属性。