2012-10-12 218 views
6

En mi proyecto tengo que mostrar el selector de fecha 18 y necesito bloquear los 80 años atrás así que ¿cómo puedo mostrar esa fecha en datepicker puede alguien ayudarme encontrar aquí aquí estoy añadiendo código de mi código i impreso en registro pero necesito mostrar en mi selector de fechas así que ¿cómo puedo mostrarmostrando datepicker 18 años atrás y bloquear ui datepicker en ios

NSCalendar * gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; 
NSDate * currentDate = [NSDate date]; 
NSDateComponents * comps = [[NSDateComponents alloc] init]; 
[comps setYear: -18]; 
NSDate * minDate = [gregorian dateByAddingComponents: comps toDate: currentDate options: 0]; 
[comps setYear: -100]; 
NSDate * maxDate = [gregorian dateByAddingComponents: comps toDate: currentDate options: 0]; 
[comps release]; 

self.datePickerView.minimumDate = minDate; 
self.datePickerView.maximumDate = maxDate; 

NSLog(@"minDate %@", minDate); 
NSLog(@"maxDate%@", maxDate); 

Respuesta

21

Hola en primer lugar, fecha mínima debe ser 100 años hacia atrás la fecha y la fecha deben máximo tener 18 años de antigüedad y luego establecer la fecha de pickerView en una fecha entre el rango de fechas para que su código final se vea como

NSCalendar * gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; 
NSDate * currentDate = [NSDate date]; 
NSDateComponents * comps = [[NSDateComponents alloc] init]; 
[comps setYear: -18]; 
NSDate * maxDate = [gregorian dateByAddingComponents: comps toDate: currentDate options: 0]; 
[comps setYear: -100]; 
NSDate * minDate = [gregorian dateByAddingComponents: comps toDate: currentDate options: 0]; 
[comps release]; 

self.datePickerView.minimumDate = minDate; 
self.datePickerView.maximumDate = maxDate; 
self.datePickerView.date = minDate; 

Esperamos que esto sea útil para usted.

+0

Gracias Abhishek Kumar por repetición rápida He intentado con su código pero la fecha no se mostraba en uidatepicker .. en la consola se muestra así 2012-10-12 15: 20: 39.363 Sangre [4398: 207] minDate 1912 -10-12 09:27:19 +0000 2012-10-12 15: 20: 39.364 Sangre [4398: 207] maxDate1994-10-12 09:50:39 +0000 – sabir

2

Aquí es viewDidLoad método de vista de clase controlador

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 


    NSCalendar * gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; 
    NSDate * currentDate = [NSDate date]; 
    NSDateComponents * comps = [[NSDateComponents alloc] init]; 
    [comps setYear: -18]; 
    NSDate * maxDate = [gregorian dateByAddingComponents: comps toDate: currentDate options: 0]; 
    [comps setYear: -100]; 
    NSDate * minDate = [gregorian dateByAddingComponents: comps toDate: currentDate options: 0]; 
    [comps release]; 



    UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 300)]; 
    [pickerView setMinimumDate:minDate]; 
    [pickerView setMaximumDate:maxDate]; 
    [pickerView setDate:minDate]; 
    [[self view] addSubview:pickerView]; 

} 

Mi salida es

enter image description here

puede usted por favor comparta su salida como captura de pantalla?

+0

intenté pero no obtuve nada. ¡¡no está bloqueando mostrando todos los años anteriores !! no puedo adjuntar la pila de captura de pantalla no acepta adjuntar la imagen a mí. El selector de fecha muestra la fecha actual normal solo – sabir

+0

¿probó mi código? Creé el datepicker del código también intento esto y espero que esto funcione – abhishekkharwar

+0

ya Abishek gracias por su funcionamiento y aquí mis días y meses también están bloqueados pero no quiero bloquear mis meses y días tengo que bloquear solo años ¿Puedes ayudarme con esto? – sabir