Tengo un comportamiento muy extraño en UIDatePicker. Tengo una vista con el selector de fecha declarado en el archivo .h como IBOutlet UIDatePicker * datePicker; con propiedad no atómica y retener. datePicker está correctamente vinculado en el archivo IB.El método de fecha de UIDatePicker es la fecha incorrecta: Dev de iPhone
En el código que yo pongo el mínimo, el máximo, la fecha y la acción inicial para pedir UICOntrolEventValueChanged usando siguiente código
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, consigo la nueva fecha con datePicker.date.
Cuando la vista se cierra (usando un botón hecho), obtengo el valor actual de la fecha usando datePicker.date.
Ahora, si la vista se invoca sin 'currentDate', el selector devuelve 'fecha actual'. Esto es lo que sucede la 'primera' vez que se llama mi selector. Cada llamada posterior a la vista, sin una 'fecha actual' me da una fecha diferente y posterior a partir de hoy. Así,
primera vez que tengo la fecha de hoy decir 9 Jun 2010
segunda vez vuelve datePicker.date 10 Jun 2010
tercero 11 tiempo Jun 2010 y así sucesivamente. Aunque no siempre es incremental, pero en general sí lo es.
He puesto NSLogs y verificado que la fecha inicial está configurada correctamente.
El problema es solo en el dispositivo (en OS 3.0), el problema no se repite en el simulador.
No puedo encontrar lo que he hecho mal. Espero que alguien más se haya topado con un problema similar y pueda ayudarme a resolverlo.
¿Ha intentado fijar CurrentDate a cero después de que ya no lo necesita? – iwasrobbed
Estoy estableciendo currentDate en nil en viewdidUnload() y soltándolo en dealloc. Estoy usando el método de protocolo para pasar la nueva 'fecha actual' a la vista que llama. – prd