RegistrationForm Demo with validation

//  ViewController.swift
//  RegistrationDemoPractise


import UIKit

class ViewController: UIViewController,UITextFieldDelegate {

    @IBOutlet var lblTitle: UILabel!
    @IBOutlet var txtName: UITextField!
    @IBOutlet var txtPhon: UITextField!
    @IBOutlet var txtEmail: UITextField!
    @IBOutlet var txtBirth: UITextField!
    @IBOutlet var txtPincode: UITextField!
    @IBOutlet var txtPassword: UITextField!
    
    var datePiker = UIDatePicker()
    
    var myarray = NSMutableArray()
    var myDict = NSDictionary()
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        if (txtBirth != nil){
            datePickerChange()
        }
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
  func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool // return NO to not change text
    
    {
        if textField == txtName
            
        {
            if (txtName.text?.characters.count)! > 20
                {
                    print("InValid Name")
               return false
            }
        else
            {
             print("Valid Name")
            }
        }
        
        
        
        if textField == txtPassword
        {
            if (txtPassword.text?.characters.count)! > 8
            {
                print("Valid password")
                return false
            }
            else
            {
                print("InValid Password")
            }
        }

        
        
        
        
        
        
        
        
        
        
        if textField == txtEmail
        {
           if EmailValidation(teststr: txtEmail.text!)
           {
            print("Valid Email")
            return true
       
            }else
           {
            print("invalid email")
            }
            
            
        }
        
        
        if textField == txtPhon || textField == txtPincode
        {
            let invertedset = NSCharacterSet(charactersIn:"0123456789").inverted
            let components = string.components(separatedBy: invertedset)
            let filtered = components.joined(separator: "")

        if textField == txtPhon
        {
            
            if (txtPhon.text?.characters.count)! > 10
            {
                print("valid phone no")
                return false
            }
            else{
                  print("invalid Phone")
            }
            
        }
            
        if textField == txtPincode
        {
            
            if (txtPincode.text?.characters.count)! > 6
            {
                print("valid Pincod")
                return false
            }
            else
            {
                print("Invalid pincode")
            }
            
        }
            
            
            
            return string == filtered
            
        }
        
        
        return true
    }
    
    
    
    
    func EmailValidation(teststr : String) -> Bool
    {
        let emailRegx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
        let emailTest = NSPredicate(format: "SELF MATCHES %@",  emailRegx)
        return emailTest.evaluate(with: teststr)
        
    }
    
    
    
    
    
    
    
    
    
    

    @IBAction func btnSubmit(_ sender: UIButton) {
        
        var myDict = NSMutableDictionary()
        

        myDict.setValue(txtName.text, forKey: "Name")
        myDict.setValue(txtPhon.text, forKey: "Phone")
        myDict.setValue(txtEmail.text, forKey: "Email")
        myDict.setValue(txtBirth.text, forKey: "Birth")
        myDict.setValue(txtPincode.text, forKey: "Pincode")
        myDict.setValue(txtPassword.text, forKey: "Password")
        
        
     //   print(myDict)
        
        myarray.add(myDict)
        print(myarray)
    }

    @IBAction func btnReset(_ sender: UIButton) {
        
        txtName.text = ""
        txtPhon.text = ""
        txtEmail.text = ""
        txtBirth.text = ""
        txtPincode.text = ""
        txtPassword.text = ""

        
    }
    
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == txtName
        {
            txtPhon.becomeFirstResponder()
        }
        
        if textField == txtPhon
        {
            txtEmail.becomeFirstResponder()
        }
        
        if textField == txtEmail
        {
            txtBirth.becomeFirstResponder()
        }
        
        if textField == txtBirth
        {
            txtPincode.becomeFirstResponder()
        }
        
        if textField == txtPincode
        {
            txtPassword.becomeFirstResponder()
        }
        
        if textField == txtPassword
        {
            txtPassword.resignFirstResponder()
        }
    return true
    }
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }
    
    func datePickerChange()
    {
        datePiker.datePickerMode = .date
  
        
        var componts = DateComponents()
        componts.year = -100
        let minDate = Calendar.current.date(byAdding: componts, to: Date())
        datePiker.minimumDate = minDate
        datePiker.maximumDate = Date()
        
        let toolbar = UIToolbar()
        toolbar.sizeToFit()
        
        let DoneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(DoneButtonPressed))
        
        let CansleButton = UIBarButtonItem(title: "Cansle", style: .plain, target: self, action: #selector(CasnleButtonressed))
        
        let label = UILabel()
        label.text = "Select BirthDate"
        label.frame = CGRect(x: 0, y: 0, width: 150, height: 30)
        label.textAlignment = .center
        label.backgroundColor = UIColor.clear
        
        
        let TitleButton = UIBarButtonItem(customView: label)
        
        let SpaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        
        
        toolbar.setItems([CansleButton,SpaceButton,TitleButton,SpaceButton,DoneButton], animated: true)
        
        txtBirth.inputAccessoryView = toolbar
        txtBirth.inputView = datePiker
    }
    func DoneButtonPressed()
    {
        let dateFormatterr = DateFormatter()
        dateFormatterr.dateStyle = .long
        dateFormatterr.timeStyle = .none
        
        txtBirth.text = dateFormatterr.string(from: datePiker.date)
        self.view.endEditing(true)
    }
    func CasnleButtonressed()
    {
        txtBirth.resignFirstResponder()
    }
}


Comments