Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift: using UIDatePicker as UITextField inputView not updating

Tags:

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) } 
like image 533
agf119105 Avatar asked Jul 03 '14 11:07

agf119105


1 Answers

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) } 
like image 84
Ashley Mills Avatar answered Sep 22 '22 00:09

Ashley Mills