Я потратил около 3 часов, пытаясь получить UIDatePicker
, чтобы сделать то, что я хочу, чтобы он делал. У меня есть настройка в качестве действия UITextField
, чтобы перейти к новому контроллеру представления с помощью UIDatePicker
. Все это работает. Мне удалось выбрать дату и отправить ее обратно в исходный контроллер.UIDatePicker с 5-минутным интервалом даты получения с интервалом
Проблема в том, что я использую 5-минутные интервалы времени. Если я не переместил выбор даты «колеса» и выберите мою кнопку «Готово», чтобы вернуться к родительскому контроллеру, возвращается время без интервала. Итак, 11:37 возвращается 11:37, когда мне нужно 11:40. Однако, если я изменю «колеса», он возвращает округленное время. Датчик даты показывает, что отображаются 5-минутные интервалы. Любые подсказки, чтобы привести меня к правильному решению? Я пробовал setDate
и minuteInterval
на UIDatePicker
на viewDidAppear безрезультатно. Ниже приведен код, который я использую:
protocol DatePickerDelegate {
func datePickerDidSelect(selectedDate: String)
}
class DatePickerVC: UIViewController {
@IBOutlet weak var pickerView: UIDatePicker!
var selectedDate = ""
var delegate : DatePickerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
//setDate()
//Have tried using setDate and minuteInterval here
}
func formatDate() -> DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM d, yyyy h:mm a"
return dateFormatter
}
func setDate() {
let dateFormatter = formatDate()
selectedDate = dateFormatter.string(from: pickerView.date)
self.delegate?.datePickerDidSelect(selectedDate: selectedDate)
print(selectedDate)
}
@IBAction func datePickerChanged(_ sender: Any) {
setDate()
}
@IBAction func doneBtnPressed(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
@IBAction func cancelBtnPressed(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}
Я получил это для работы, однако мне пришлось изменить 'datePicker.date = roundedDate' на' datePicker.setDate (roundedDate, animated: false) '. Но в то же время на самом деле решили отключить кнопку «done» до тех пор, пока не будет выбрано/изменено время, так как более вероятно, что в этом приложении они не будут выбирать время начала, прямо сейчас. – user1881482