Je reçois un comportement très étrange sur UIDatePicker. J'ai une vue avec le sélecteur de date déclaré dans le fichier .h comme IBOutlet UIDatePicker * datePicker; avec propriété non atomique et conserver. datePicker est correctement lié dans le fichier IB.UIDatePicker méthode de date est de choisir une date erronée: iPhone Dev
Dans le code, je suis en train minimum, maximum, date initiale et de l'action à appeler à l'aide du code ci-dessous UICOntrolEventValueChanged
If (!currentDate) {
initialDate = [NSDate date];
} else {
initialDate = currentdate;
}
[datePicker setMinimumDate:[NSDate date]];
[datePicker setMaximumDate:[[NSDate date] addTimeInterval:5 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years
[datePicker setDate:initialDate animated:YES];
[datePicker addTarget:self action:@selector(getDatePickerValue:) forControlEvents:UIControlEventValueChanged];
En getDatePickerValue, je reçois la nouvelle date à l'aide datePicker.date.
Lorsque la vue est fermée (en utilisant un bouton terminé), j'obtiens la valeur actuelle de la date en utilisant datePicker.date.
Maintenant, si la vue est appelée sans 'date_actuelle', le sélecteur renvoie 'date d'aujourd'hui'. C'est ce qui arrive la première fois que mon pickerView est appelé. Chaque appel ultérieur à la vue, sans "date actuelle" me donne une date différente et plus tard à partir d'aujourd'hui. Ainsi,
première fois que je reçois la date d'aujourd'hui dire 9 juin 2010
deuxième fois datePicker.date retourne 10 juin 2010
troisième fois le 11 juin 2010 et ainsi de suite. Bien que ce ne soit pas toujours incrémental, mais surtout c'est.
J'ai mis NSLogs, et vérifié la date initiale est réglée correctement.
Le problème est uniquement sur le périphérique (sur OS 3.0), le problème n'est pas répliqué sur le simulateur.
Je ne trouve pas ce que j'ai fait de mal. J'espère que quelqu'un d'autre a rencontré un problème similaire et peut m'aider à résoudre ce problème.
Avez-vous essayé d'installer currentdate à zéro après que vous ne avez plus besoin? – iwasrobbed
Je mets currentDate à zéro dans viewdidUnload() et le libère dans dealloc. J'utilise la méthode de protocole pour passer le nouveau 'currentdate' à la vue d'appel. – prd