Reputation: 63
I'm new in swift and I need help with my first app. I have UITableView with To Do tasks. I need help with adding a UIDatePicker in textField in UIAlertController.
override func viewDidLoad() {
super.viewDidLoad()
self.setDatePicker.addTarget(self, action: #selector(self.dateChangeEvent), for: .valueChanged)
}
@IBAction func addNewTaskButtonAction(_ sender: Any) {
let toDoAlert = UIAlertController(title: "Add ToDo", message: "Add a new task", preferredStyle: .alert)
toDoAlert.addTextField()
toDoAlert.addTextField { textField in
textField.inputView = self.setDatePicker
let toolBar = UIToolbar()
toolBar.barStyle = .default
toolBar.isTranslucent = true
toolBar.isUserInteractionEnabled = true
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.onClickDoneButton))
toolBar.setItems([doneButton], animated: true)
textField.inputAccessoryView = toolBar
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .medium
textField.text = dateFormatter.string(from: self.setDatePicker.date)
self.view.endEditing(true)
}
@objc func onClickDoneButton() {
self.view.endEditing(true)
}
@objc private func dateChangeEvent(_ dataPicker: UIDatePicker){
toDoAlert.textFields?.first?.text = dataPicker.date.description
}
Upvotes: 0
Views: 448
Reputation: 18934
You can add like this
let datePicker = UIDatePicker()
let toDoAlert = UIAlertController(title: "Add ToDo", message: "Add a new task", preferredStyle: .alert)
toDoAlert.addTextField { textField in
textField.inputView = self.datePicker
}
Or
let datePicker = UIDatePicker()
let toDoAlert = UIAlertController(title: "Add ToDo", message: "Add a new task", preferredStyle: .alert)
toDoAlert.addTextField()
toDoAlert.textFields?.first?.inputView = datePicker
And for setting the picker value.
let datePicker = UIDatePicker()
let toDoAlert = UIAlertController(title: "Add ToDo", message: "Add a new task", preferredStyle: .alert)
@IBAction func showAlert(_ sender: UIButton) {
datePicker.addTarget(self, action: #selector(dateChangeEvent), for: .valueChanged)
toDoAlert.addTextField { textField in
textField.inputView = self.datePicker
}
//=== Other Code ====
}
@objc private func dateChangeEvent(_ datePicker: UIDatePicker) {
toDoAlert.textFields?.first?.text = datePicker.date.description
}
Upvotes: 1