From dd7007d6ade90fa9ce3ee21e94462730c7e04c65 Mon Sep 17 00:00:00 2001 From: Caio Mathielo Date: Wed, 28 Oct 2015 18:22:24 -0200 Subject: [PATCH] Adding public method validateField() --- SwiftValidator/Core/Validator.swift | 20 ++++++++++++++++++++ Validator/ViewController.swift | 14 ++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/SwiftValidator/Core/Validator.swift b/SwiftValidator/Core/Validator.swift index f9b806c..a5d41df 100644 --- a/SwiftValidator/Core/Validator.swift +++ b/SwiftValidator/Core/Validator.swift @@ -47,6 +47,26 @@ public class Validator { } } + // MARK: Public functions + + public func validateField(textField: UITextField, callback: (error:ValidationError?) -> Void){ + if let fieldRule = validations[textField] { + if let error = fieldRule.validateField() { + if let transform = self.errorStyleTransform { + transform(validationError: error) + } + callback(error: error) + } else { + if let transform = self.successStyleTransform { + transform(validationRule: fieldRule) + } + callback(error: nil) + } + } else { + callback(error: nil) + } + } + // MARK: Using Keys public func styleTransformers(success success:((validationRule:ValidationRule)->Void)?, error:((validationError:ValidationError)->Void)?) { diff --git a/Validator/ViewController.swift b/Validator/ViewController.swift index 6d37f64..f273e1a 100644 --- a/Validator/ViewController.swift +++ b/Validator/ViewController.swift @@ -78,4 +78,18 @@ class ViewController: UIViewController , ValidationDelegate, UITextFieldDelegate func hideKeyboard(){ self.view.endEditing(true) } + + // MARK: Validate single field + // Don't forget to use UITextFieldDelegate + func textFieldShouldReturn(textField: UITextField) -> Bool { + validator.validateField(textField){ error in + if error == nil { + // Field validation was successful + } else { + // Validation error occurred + } + } + return true + } + } \ No newline at end of file