2016-03-28 1 views
0

J'ai une partie de l'application qui fixe la date et l'heure d'un rendez-vous. Pour cela, j'ai deux NSDatePickerView. Le premier j'ai mis à NSDatePickerModeDate, tandis que l'autre à NSDatePickerModeTime. Mais en fait, ils devraient faire référence à un même objet NSDate à l'intérieur d'une entrée NSMutableDictionary. Je sais à propos de NSDatePickerModeDateTime, mais j'ai besoin de la date et l'heure à choisir séparément.Travailler avec la date et l'heure séparément en utilisant NSDatePickerView sur Xcode

Je sais comment mettre en place le NSDatePickerView pour afficher et masquer et le contrôle des événements et tels, mais le contrôle des événements UIControlEventValueChanged feu pour NSDatePickerView, je suis confus sur la façon de coder le changement pour cela, et aussi comment initialiser les ramasseurs (datePicker.date = today, timePicker.date = "9:00 AM")

@interface MyViewController() { 
    NSMutableDictionary *data; 
} 

@end 

@implementation MyViewController 

@synthesize datePicker, timePicker; 

- (void) viewDidLoad { 
    [super viewDidLoad]; 
    data = [[NSMutableDictionary alloc] init]; 
    [data setObject:[NSDate date] forKey:@"date"]; 

    datePicker.datePickerMode = UIDatePickerModeDate; 
    timePicker.datePickerMode = UIDatePickerModeTime; 

    [datePicker addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged]; 
    [timePicker addTarget:self action:@selector(changeTime:) forControlEvents:UIControlEventValueChanged]; 

    datePicker.date = data[@"date"]; //???? 
    timePicker.date = data[@"date"]; //???? 
} 

- (IBAction) changeDate:(id)sender { 
    UIDatePickerView *dp = (UIDatePickerView *)sender; 
    [data setObject:dp.date forKey:@"date"]; //???? 
} 

- (IBAction) changeTime:(id)sender { 
    UIDatePickerView *tp = (UIDatePickerView *)sender; 
    [data setObject:tp.date forKey:@"date"]; //???? 
} 

La partie que je ne sais pas comment le code, il est désigné par //????. J'ai lu à propos de NSDateFormatter, NSCalendar, et certains composants de date sur certaines réponses, mais cela me rendait plus confus car il jette également des cordes et des structures dans le mélange, quoi utiliser pour faire quoi et quand. S'il vous plaît aider.

+0

Qu'est-ce que 'NSDatePickerView' et' UIDatePickerView'? – Willeke

+0

@Willeke désolé, je veux dire seulement 'UIDatePickerView'. –

Répondre

1

Vous pouvez définir les deux sélecteurs de date à la même date et heure. La partie inutilisée est là mais elle n'est pas affichée et ne peut pas être changée. Lorsque l'utilisateur modifie la valeur d'un sélecteur de date, vous devez définir l'autre sélecteur de date sur la même valeur.

- (IBAction)changeDate:(id)sender { 
    NSDatePicker *dp = (NSDatePicker *)sender; 
    [data setObject:dp.dateValue forKey:@"date"]; 
    self.timePicker.dateValue = dp.dateValue; 
} 

- (IBAction)changeTime:(id)sender { 
    NSDatePicker *tp = (NSDatePicker *)sender; 
    [data setObject:tp.dateValue forKey:@"date"]; 
    self.datePicker.dateValue = tp.dateValue; 
} 
+0

Oh je vois! Eh bien, cela éclaircit mon dillema. Merci! –

1

u pouvez essayer cette

/// Convertir une date complète à ce jour seulement

- (IBAction) changeDate:(UIDatePickerView *)sender { 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy"]; 
NSString *dateStr = [dateFormatter stringFromDate:[sender date]]; 
[data setObject:dateStr forKey:@"date"]; 
} 

/// convertir date au seul format de temps

- (IBAction) changeTime:(UIDatePickerView *)sender { 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"hh:mm a"]; 
NSString *dateStr = [dateFormatter stringFromDate:[sender date]]; 
[data setObject:dateStr forKey:@"Time"]; 
} 
+0

C'est la solution que j'utilise initialement. Mais l'autre solution est un peu plus applicable. Mais merci pour la réponse. –