Reputation: 3
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
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