繁体   English   中英

Swift-如何使用将SwiftValidator集成到我的项目中

[英]Swift - How to use integrate SwiftValidator into my project

我有一个登录表单,该表单有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
}

Ive最近将验证库(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委托方法中进行表单提交,而我无法访问发送方var。 即,我在这里有什么选择或被认为是最佳实践? ...我想自定义validationSuccessful方法以将布尔值返回给调用函数,但怀疑这是否是最佳方法?

恕我直言,我会使用validationSuccessful()方法而不是您自己的操作方法来成功提交表单。 我会避免使用标签来区分登录按钮和注册按钮,而是让每个调用单独的操作方法。 通过使用相同的处理程序来处理它们,不会节省任何时间,代码或逻辑清晰度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM