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

时间:2015-08-23 23:38:49

标签: ios forms swift validation

我有一个登录表单,它取两种替代形式,具体取决于用户如何点击分段控件....作为带有电子邮件,密码和重复密码的注册表单;或者只是电子邮件和密码的登录表格。

当用户填写注册或登录字段并点击注册/登录按钮时......我使用代码沿着...记录用户...

    @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,但是怀疑这是否是最好的方法?

1 个答案:

答案 0 :(得分:0)

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