我有一个登录表单,该表单有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)方法,并继续执行自己的表单提交代码(...我需要引用发送方以检查其标签以确定是否该按钮被点击为“注册”按钮或“登录”按钮),而不是如它的validationSuccessful委托方法中的SwiftValidator库所建议的那样进行表单提交,而我无法访问发送方var。即,我在这里有哪些选择或被认为是最佳实践? ...我想自定义validationSuccessful方法以将布尔值返回给调用函数,但怀疑这是否是最佳方法?

最佳答案

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

关于ios - Swift-如何使用将SwiftValidator集成到我的项目中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32172619/

10-12 13:19