Reputation: 1184
I need to add DatePicker to three textfields for that
I have created one datepicker like below
func addInputViewDatePicker(target: Any, selector: Selector) {
let screenWidth = UIScreen.main.bounds.width
//Add DatePicker as inputView
let datePicker = UIDatePicker(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 216))
datePicker.datePickerMode = .date
self.inputView = datePicker
//Add Tool Bar as input AccessoryView
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 44))
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelBarButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelPressed))
let doneBarButton = UIBarButtonItem(title: "Done", style: .plain, target: target, action: selector)
toolBar.setItems([cancelBarButton, flexibleSpace, doneBarButton], animated: false)
self.inputAccessoryView = toolBar
}
@objc func cancelPressed() {
self.resignFirstResponder()
}
and i am adding datepicker to three textfields in doneButtonPressed
like below
@objc func doneButtonPressed() {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let datePicker = self.fromDateTextfield.inputView as? UIDatePicker {
self.fromDateTextfield.text = dateFormatter.string(from: datePicker.date)
}
if let datePicker = self.toDateTextfield.inputView as? UIDatePicker {
self.toDateTextfield.text = dateFormatter.string(from: datePicker.date)
}
if let datePicker = self.lastbidDateTextfield.inputView as? UIDatePicker {
self.lastbidDateTextfield.text = dateFormatter.string(from: datePicker.date)
}
self.lastbidDateTextfield.resignFirstResponder()
self.toDateTextfield.resignFirstResponder()
self.fromDateTextfield.resignFirstResponder()
}
and in viewdidload:
override func viewDidLoad() {
super.viewDidLoad()
fromDateTextfield.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed))
toDateTextfield.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed))
lastbidDateTextfield.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed))
}
with above code if i add date in fromDateTextfield
then in all three textfields same date is adding.. without going to that remaining two textfields
i want to add different dates to three textfields.. how to do that with above code..
if my above code is wrong please help me with new correct working code for three three textfields
Upvotes: 0
Views: 117
Reputation: 100503
Set a tag to every UIBarButtonItem
from 0 to 2
func addInputViewDatePicker(target: Any, selector: Selector,tag:Int)
.....
doneBarButton.tag = tag
}
@objc func doneButtonPressed(_ sender: UIBarButtonItem) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let arr = [fromDateTextfield,toDateTextfield,lastbidDateTextfield]
let current = arr[sender.tag]
if let datePicker = current.inputView as? UIDatePicker {
current.text = dateFormatter.string(from: datePicker.date)
current.resignFirstResponder()
}
}
Upvotes: 1