Potrzebujesz UIDatePicker z określonymi maksymalnymi i minimalnymi datami i czasami. Obecnie wydaje się, że NSDatePicker.minimumDate i .maximumDate uwzględniają tylko datę. Jaki jest właściwy sposób, aby sobie z tym poradzić?Czy minimalnyData i maksymalna data UIDatePicker mogą zawierać czas?
5
A
Odpowiedz
7
NSDates zawiera zarówno datę, jak i godzinę. Z dokumentacji:
Obiekty NSDate reprezentują pojedynczy punkt w czasie.
Poniższy przykład ma bieżącej daty i czasu jako wartości minimalnej i czas na godzinę odtąd jako wartość maksymalna (w celu zbadania tylko upuść w viewDidLoad dowolnego UIViewController):
// Time right now
NSDate *minDate = [NSDate new];
// One hour from now
NSDate *maxDate = [[NSDate alloc] initWithTimeIntervalSinceNow:60*60];
UIDatePicker *picker = [UIDatePicker new];
[picker setDatePickerMode:UIDatePickerModeDateAndTime];
[picker setMinimumDate:minDate];
[picker setMaximumDate:maxDate];
[[self view] addSubview:picker];
[super viewDidLoad];
Możesz przeczytać więcej o NSDate na Dev Center.
1
NSDateFormatter *FormatDate = [[[NSDateFormatter alloc] init] autorelease];
[FormatDate setDateFormat:@"MMMM d y"];
NSString *date1=[FormatDate stringFromDate:[theDatePicker date]];
NSString *today=[FormatDate stringFromDate:[NSDate date]];
NSTimeInterval secondsPerDay = 24 * 60 * 60;
NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
NSString *tommorow=[FormatDate stringFromDate:tomorrow];
[pickerViewPopup dismissWithClickedButtonIndex:0 animated:YES];
if ([date1 isEqualToString:today]||[date1 isEqualToString:tommorow]) {
NSDateFormatter *FormatDate = [[[NSDateFormatter alloc] init] autorelease];
[FormatDate setDateFormat:@"MMM dd,yyyy"];
currentdate.text = [FormatDate stringFromDate:[theDatePicker date]];
Dziękuję Paulo. Tak, jestem świadomy powyższego i moje mindate i maxdate NSDate zawierają czas, ale UIDatePicker ustawia granice tylko według daty. Innymi słowy, jeśli ustawiam myśl na dzisiejszą datę o 8 rano, uniemożliwi mi to ustawienie daty na wczoraj, ale wciąż mogę wybrać wcześniejszy czas ... na przykład 6 rano. – CBGrey
To bardzo dziwne. Jeśli zmienisz minDate na NSDate kilka godzin wcześniej, nie powinieneś być w stanie wybrać wcześniejszego czasu. Co się dzieje w moim przypadku, gdy wybieram 6 rano, oznacza, że próbnik animuje się ponownie do minimalnego ważnego czasu o 8 rano. Czy masz próbkę kodu? –
Cóż, cieszę się, że działa tak, jak powinienem. Jestem niezadowolony z tego, że mam problem w moim kodzie :) Pozwól, że to przejrzę i zobaczę, czy mogę wyciągnąć odpowiedni próbkę. Dziękuję za twoją ciągłą pomoc. – CBGrey