我有一个登录表单,它取两种替代形式,具体取决于用户如何点击分段控件....作为带有电子邮件,密码和重复密码的注册表单;或者只是电子邮件和密码的登录表格。
当用户填写注册或登录字段并点击注册/登录按钮时......我使用代码沿着...记录用户...
@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)方法并继续我自己的表单提交代码(...我需要引用发件人来检查它&# 39; s标签用于确定按钮是否被点击为“注册”按钮或“按键”按钮而不是按照SwiftValidator库中的建议进行表单提交&#39 ; s validationSuccessful委托方法,我没有访问发送者var。即我在这里有什么选择或者什么是最佳实践? ...我想过自定义validationSuccessful方法,可能会给调用函数返回一个bool,但是怀疑这是否是最好的方法?
答案 0 :(得分:0)
恕我直言,我在validationSuccessful()
方法中成功提交表单,而不是在您自己的操作方法中。我避免使用标签来区分登录和注册按钮,而是让每个标签都调用一个单独的操作方法。通过使用相同的处理程序处理它们,您不会保存任何时间,代码或逻辑清晰度。