I want error icon image will be shown automatically within UITextField when one of validation is failed in swift.
Here is normal stage

Here is error stage when validation is failed

For that UITextField, I've created custom UITextField as follow
class OvalTextField: UITextField {
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        createBorder()
    }
    required override init(frame: CGRect) {
        super.init(frame: frame)
        createBorder()
    }
    func createBorder(){
        let errorImg = UIImageView (frame: CGRectMake(0, 0, 30, 30))
        errorImg.image = UIImage(named: "error")
        errorImg.contentMode = UIViewContentMode.Left
        self.layer.borderWidth = 1.0
        self.layer.borderColor = UIColor(red:0.93, green:0.93, blue:0.93, alpha:1.0).CGColor
        self.layer.cornerRadius = self.frame.size.height / 2
        self.layer.masksToBounds = true
        let gapLabel = UIView (frame: CGRectMake(60, 0, 10, 40))
        self.leftView = gapLabel
        self.leftViewMode = UITextFieldViewMode.Always
        /* Display that one when validation is failed */
        self.rightView = errorImg;
        self.rightViewMode = UITextFieldViewMode.Always
    }
}
and used that UITextField in ViewController,
@IBOutlet var txtEmail: OvalTextField!
if that txtEmail is empty or not valid email address, I want to show error icon message.
Please suggest me how to do it. Thanks in advance.
You can use the UITextFiledDelegate method func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool to valid the email when user input.
Implement the delegate method
func textField(textField: UITextField, shouldChangeCharactersInRange  range: NSRange, replacementString string: String) -> Bool {
    let email = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
    if /* email is validate */ {
        textField.rightView?.hidden = false
    } else {
        textField.rightView?.hidden = true
    }
    return true
}
func validated() -> Bool {
    var valid: Bool = true
    if ((txt_EmailID.text?.isEmpty) != nil){
        // change placeholder color to red color for textfield email-id
        txt_EmailID.attributedPlaceholder = NSAttributedString(string: "Please enter Your Email ID", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
        valid = false
    }
    if ((txt_UserName.text?.isEmpty) != nil){
        // change placeholder color to red for textfield username
        txt_UserName.attributedPlaceholder = NSAttributedString(string:"Please enter User Name",attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
        valid = false
    }
    if ((txt_Password.text?.isEmpty) != nil){
        // change placeholder color to red for textfield password
        txt_Password.attributedPlaceholder = NSAttributedString(string:"Please enter Password",attributes: [NSForegroundColorAttributeName:UIColor.redColor()])
        valid = false
    }
    if ((txt_MobileNo.text?.isEmpty) != nil){
        // change placeholder color to red for textfield mobile no.
        txt_MobileNo.attributedPlaceholder = NSAttributedString(string: "Please enter Mobile no.",attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
        valid = false
    }
    return valid
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With