I have two text Fields and both of them invoke a date picker when they are clicked upon by the user. I have a date picker that has a done button and I want to show the time that I select from my date picker on my selected textField. So how can I pass the selected text Field as an argument in the selector parameter of my UIBarButtonItem. Below is the whole code. Please Help. Thank you!
@IBOutlet weak var startingTimeTxt: UITextField!
@IBOutlet weak var endingTimeTxt: UITextField!
let datePickerTime = UIDatePicker()
override func viewDidLoad() {
super.viewDidLoad()
startingTimeTxt.delegate = self
endingTimeTxt.delegate = self
datePickerTime.datePickerMode = .time
}
func createDatePicker(textField: UITextField) {
//toolbar
let toolbar = UIToolbar()
toolbar.sizeToFit() //will fit to full screen
//bar done button
let doneBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(donePressed(textField: )))
//remember in selector u dont want to call the method , just name it
toolbar.setItems([doneBtn], animated: true)
//assign toolbar
textField.inputAccessoryView = toolbar
//assign date picker to textfield
textField.inputView = datePickerTime
}
@objc func donePressed(textField: UITextField) {
textField.text = "\(datePickerTime)"
self.view.endEditing(true)
}
}
//MARK: - TextField Delegate
extension NewActivityTableViewController: UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == startingTimeTxt {
createDatePicker(textField: textField)
}
else if textField == endingTimeTxt {
createDatePicker(textField: textField)
}
}
}