I have two textfields that I want to input times into. I've gotten one of the textfields to work so that the inputView is a date picker, however, I can't figure out if there's an easy way to change my code so that the other text field would also have a date picker as the input field.
Here is my code:
func createDatePicker(){
let toolbar = UIToolbar()
toolbar.sizeToFit()
//done button
let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed))
toolbar.setItems([done], animated: false)
fromTextField.inputAccessoryView = toolbar
fromTextField.inputView = picker
picker.datePickerMode = .time
picker.minuteInterval = 15
}
@objc func donePressed(){
let formatter = DateFormatter()
formatter.dateStyle = .none
formatter.timeStyle = .short
let dateString = formatter.string(from: picker.date)
fromTextField.text = "\(dateString)"
self.view.endEditing(true)
}
What would be the best way to make this code work for a toTextField too besides just making a copy of these two functions?
For creating two textFields having same pickerView as inputView @CZ54's answer is correct ie
func createDatePicker(forField field : UITextField){
let toolbar = UIToolbar()
toolbar.sizeToFit()
//done button
let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed))
toolbar.setItems([done], animated: false)
field.inputAccessoryView = toolbar
field.inputView = picker
picker.datePickerMode = .time
picker.minuteInterval = 15
}
//later
self.createDatePicker(forField: fromTextField)
self.createDatePicker(forField: toTextField)
And to fetch data from pickerView as per the active textField you have to create a variable of type UITextField
and assign it as following:
var activeTextField: UITextField!
func textFieldDidBeginEditing(_ textField: UITextField) {
activeTextField = textField
}
And whenever row would be selected in pickerView, by following you could perform relevant actions
if activeTextField == fromTextField {
//action
} else if activeTextField == toTextField {
//action
}
You can do :
func createDatePicker(forField field : UITextField){
let toolbar = UIToolbar()
toolbar.sizeToFit()
//done button
let done = UIBarButtonItem(barButtonSystemItem:.done, target: nil, action: #selector(donePressed))
toolbar.setItems([done], animated: false)
field.inputAccessoryView = toolbar
field.inputView = picker
picker.datePickerMode = .time
picker.minuteInterval = 15
}
//later
self.createDatePicker(forField: fromTextField)
self.createDatePicker(forField: toTextField)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.