【发布时间】:2015-08-23 23:38:49
【问题描述】:
我有一个登录表单,它采用 2 种替代表单,具体取决于用户如何点击分段控件 .... 作为带有电子邮件、密码和重复密码的注册表单;或作为仅包含电子邮件和密码的登录表单。
当用户填写注册或登录字段并点击注册/登录按钮时...我使用代码登录用户...
@IBAction func loginRegisterTapped(sender: AnyObject) {
//check whether the sender tag is registerTag (in which case a new user is registering or alternately returning user logging in
//do various checks and if all good submit the form
}
我最近将一个验证库 (SwiftValidator) 复制到我的项目中,并将其配置为在点击登录/注册按钮时也验证字段,即我在 loginRegisterTapped ibaction 方法中将验证代码插入到我自己的代码上方。我集成 SwiftValidator 后的代码基本上变成了
@IBAction func loginRegisterTapped(sender: AnyObject) {
//validation
self.clearErrors()
validator.validate(self)
//check whether the sender tag is registerTag (in which case a new user is registering or alternately returning user logging in
//do various checks and if all good submit the form
}
SwiftValidator 库结束我们在验证成功或失败时调用 2 个委托方法(在我的 LoginViewController 中),如下所示
// SwiftValidator library Delegate methods
func validationSuccessful() {
// submit the form
}
func validationFailed(errors:[UITextField:ValidationError]) {
// turn the fields to red
for (field, error) in validator.errors {
field.layer.borderColor = UIColor.redColor().CGColor
field.layer.borderWidth = 1.0
error.errorLabel?.text = error.errorMessage // works if you added labels
error.errorLabel?.hidden = false
}
}
如果验证成功,我怎样才能让代码返回到我的@IBAction func loginRegisterTapped(sender: AnyObject) 方法并继续我自己的表单提交代码(...我需要对发件人的引用来检查它的标签确定该按钮是作为“注册”按钮还是“登录”按钮被点击),而不是按照 SwiftValidator 库在其validationSuccessful委托方法中的建议进行表单提交,其中我无权访问发件人变量。即我在这里有什么选择或者什么被认为是最佳实践? ...我想自定义validationSuccessful 方法以将布尔值返回给调用函数,但怀疑这是否是最好的方法?
【问题讨论】:
标签: ios forms swift validation