DatePicker swift
При нажатии на какую-либо дату, данные передаются на другой экран. Все отлично работает кроме сегодняшней даты. Она выбрана по умолчанию и нажать на сегодняшнее число нельзя. Как исправить?
import UIKit
protocol DatePickerViewControllerDelegate { func transferDate(_ date: String) }
class DatePickerViewController: BackgroundVC {
@IBOutlet weak var datePicker: UIDatePicker!
var delegate: DatePickerViewControllerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
datePicker.maximumDate = NSDate() as Date
datePicker.datePickerMode = .date
datePicker.preferredDatePickerStyle = .inline
let localeID = Locale.preferredLanguages.first
datePicker.locale = Locale(identifier: localeID!)
datePicker.addTarget(self, action: #selector(dateChanged), for: .valueChanged)
}
@objc func dateChanged(picker: UIDatePicker){
let formatter = DateFormatter()
formatter.dateFormat = "dd.MM.yyyy"
let date = formatter.string(from: picker.date)
delegate?.transferDate(date)
dismiss(animated: true, completion: nil)
}
}
Ответы (1 шт):
Назначьте закрытие контроллера и передачу даты не на событие dateChanged, а на действие кнопки Готово например в navigation bar, сейчас у Вас контроллер закрывается при любом изменении даты, что само по себе может оказаться неудобным - а что если пользователь выберет неверную дату? Тогда чтобы ее изменить, потребуется снова открыть контроллер с пикером.