2016-03-29 8 views
0

Ich habe eine Datumsauswahl, die festgelegt ist, damit Benutzer zukünftige Daten nicht auswählen können. In viewDidLoad wird das maximale Datum für die aktuelle Zeit festgelegt.Datepicker maximumDate am gestrigen Tag während der frühen Zeit des aktuellen Tages stecken

dateDatePicker.maximumDate = NSDate() 

Aber ich habe einen Fehler bemerkt. Heute bis Mittag war das Höchstdatum das gestrige Datum. Aber jetzt, nach Mittag, zeigt es das heutige Datum.

Die Art, wie ich es implementiert: Die Datumsauswahl wird mit Alpha angezeigt und ausgeblendet, wenn der Benutzer es verwenden möchte. So setze ich das maximale Datum nicht jedes Mal, wenn die Kommissionierer angezeigt wird, aber wenn es die Ansicht, lädt es ist in.

Also ich bin nicht sicher, ob dies ein Fehler ist? Hat es mit Zeitzonen zu tun? Oder hat mit der Tatsache zu tun, dass ich nur dateDatePicker.maximumDate einmal aufrufen, wenn sie geladen anzeigen und das konnte vor Tagen passiert sein? Oder wenn ich den maximumDate jedes Mal zurücksetzen sollte, wenn ich den datePicker zeige?

Antwort

1

Ja, Sie sollten fast sicher das maximale Datum jedes Mal einstellen, wenn Sie die Datumsauswahl anzeigen.

Wenn Sie das maximale Datum an einem vorherigen Tag festlegen und es dann nie aktualisieren oder den View-Controller schließen, ändert sich das nicht.

Legen Sie es in viewWillAppear, nicht ViewDidLoad.

Wenn das nicht funktioniert, verwenden Sie NSCalendar und NSDateComponents, um ein NSDate zu erstellen, das am aktuellen Datum 23:59 ist (holen Sie das MM/TT/JJJJ vom aktuellen Datum als Datumskomponenten und stellen Sie die Uhrzeit manuell auf 23:59 Das sollte funktionieren