I have a textfield and when it is selected a datepicker pops up instead of a keyboard, but it only updates with todays date the first time. The user changes the date, but the textfield does not continue to update. What is the problem?
This is how I call the Datepicker and control the date being inputted into my textfield:
@IBAction func dp(sender: UITextField) { var DatePickerView : UIDatePicker = UIDatePicker() DatePickerView.datePickerMode = UIDatePickerMode.Date textfieldjobdate.inputView = DatePickerView DatePickerView.addTarget(self, action: Selector("handleDatePicker"), forControlEvents: UIControlEvents.ValueChanged) } func handleDatePicker() { var DatePickerView : UIDatePicker = UIDatePicker() var dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd MMM yyyy" textfieldjobdate.text = dateFormatter.stringFromDate(DatePickerView.date) }
Your handleDatePicker
method is instantiating a new DatePicker
each time it's called. You need to add a parameter to the function to pass in the sender (the DatePicker
created in func dp
)
@IBAction func dp(_ sender: UITextField) { let datePickerView = UIDatePicker() datePickerView.datePickerMode = .date sender.inputView = datePickerView datePickerView.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged) } @objc func handleDatePicker(sender: UIDatePicker) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd MMM yyyy" textfieldjobdate.text = dateFormatter.string(from: sender.date) }
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