約3時間私はそれを行うにはUIDatePicker
を取得しようとしました。私はUITextField
のアクションとして、UIDatePicker
で新しいビューコントローラにセグメントするようにセットアップしました。これはすべて動作しています。私は日付を選択し、それを元のView Controllerに送り返すことができました。5分間隔のUIDatePickerは、間隔が表示されている間に表示されます
問題は、5分の時間間隔を使用していることです。日付ピッカー「車輪」を移動せず、親のコントローラに戻るために「完了」ボタンを選択しないと、非インターバル時間が返されます。だから11:37は私が11:40が必要なときに11:37を返す。しかし、「車輪」を変更すると、丸められた時刻が返されます。 datepickerは、現時点で5分間隔を表示しています。私を正しい解決に導く手掛かりはありますか?私はsetDate
とminuteInterval
をviewDidAppearのUIDatePicker
で試してみました。
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) 'に変更しなければなりませんでした。しかし、その間に、実際には、このアプリケーションでは、現在の開始時間を選択していない可能性が高いので、時間が選択/変更されるまで終了ボタンを無効にすることを決定しました。 – user1881482