Manyu
Manyu

Reputation: 3

How to adjust the date set through UIDatePicker

I'm using UIDatePicker and able to show the date that the user chooses from UIDatePicker. I want to adjust the date and show the next/previous date by clicking some buttons, but I don't know how I can adjust the UIDatePicker date.

Please help me. Thank you.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var InputTextField: UITextField!

    private var datePicker: UIDatePicker?


    override func viewDidLoad() {
        super.viewDidLoad()

        datePicker = UIDatePicker()
        datePicker?.datePickerMode = .date
        datePicker?.addTarget(self, action: #selector(ViewController.dateChanged(datePicker:)), for: .valueChanged)

        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.viewTapped(gestureRecognizer:)))

        view.addGestureRecognizer(tapGesture)

        InputTextField.inputView = datePicker


    }


    @objc func viewTapped (gestureRecognizer: UITapGestureRecognizer) {
        view.endEditing(true)
    }


    @objc func dateChanged (datePicker: UIDatePicker) {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MM/dd/yyyy"

        InputTextField.text = dateFormatter.string(from: datePicker.date)
        view.endEditing(true)
    }

//From here, it's new
    @IBAction func RightArrow(_ sender: UIButton) {
        let date = datePicker!.date
             if let modifiedDate = Calendar.current.date(byAdding: .day, value: 1, to: date) {
               datePicker!.date = modifiedDate
            InputTextField.inputView = datePicker
    }
}

Upvotes: 0

Views: 351

Answers (1)

Subramanian Mariappan
Subramanian Mariappan

Reputation: 3886

If what you want to do is to update the UIDatePicker with the date you want, you can simply set the date property of UIDatePicker.

let date = datePicker.date
if let modifiedDate = Calendar.current.date(byAdding: .day, value: 1, to: date) {
   datePicker.date = modifiedDate
   InputTextField.inputView = datePicker
   let dateFormatter = DateFormatter()
   dateFormatter.dateFormat = "MM/dd/yyyy"

   InputTextField.text = dateFormatter.string(from: datePicker!.date)
}

Upvotes: 1

Related Questions