È necessario un UIDatePicker con date massime e minime specifiche e orari. Attualmente NSDatePicker.minimumDate e .maximumDate sembrano considerare solo la data. Qual è il modo corretto per gestire questo?Can UIDatePicker's minimumDate e maximumDate includono time?
5
A
risposta
7
NSDati contengono sia la data che l'ora. Da documenti:
Gli oggetti NSDate rappresentano un singolo punto nel tempo.
Il seguente esempio ha la data e ora correnti come valore minimo e il tempo di un'ora da ora come il valore massimo (per provarlo solo cadere nella viewDidLoad di qualsiasi 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];
Ulteriori informazioni su NSDate sono disponibili su 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]];
Grazie Paulo. Sì, sono a conoscenza di quanto sopra e gli oggetti MindDate e MaxDate di NSDate contengono il tempo, ma UIDatePicker sta solo impostando i limiti entro la data. In altre parole, se metto in guardia dalla data odierna alle 8 di mattina, mi impedisce di impostare la data su ieri, ma posso ancora scegliere un orario precedente ... 6:00 per esempio. – CBGrey
È molto strano. Se si modifica minDate a un NSDate poche ore prima, non si dovrebbe essere in grado di selezionarne una precedente. Quello che succede nel mio caso quando seleziono 6 am è che il picker ritorna al minimo orario valido 8 am. Hai un esempio di codice? –
Beh, sono felice di sentire che funziona come penso che dovrebbe. Non sono contento di pensare di avere un problema nel mio codice :) Fammi esaminare e vedere se riesco a estrarre un campione pertinente. Grazie per il tuo aiuto continuo. – CBGrey