2012-10-12 13 views
6

W moim projekcie muszę pokazać próbnik daty 18 z powrotem i muszę zamknąć 80 lat wstecz, więc jak mogę pokazać te daty w datepicker może ktoś mi pomóc znaleźć tutaj tutaj dodaję kod mój kod i drukowane w dzienniku, ale muszę być wyświetlane na moim datepicker więc jak mogę wyświetlićpokazuję datepicker 18 lat wstecz i blokuję datownik w 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); 

Odpowiedz

21

Hi przede wszystkim minimalnego terminu musi być 100 lat wstecz datę i max data musi być 18-letnią datą wsteczną, a następnie ustawić datę pickerView na datę pomiędzy zakresami dat, aby ostateczny kod wyglądał jak:

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; 

Mamy nadzieję, że będzie to pomocne.

+0

Dzięki Abhishek Kumar do szybkiej powtórki Próbowałem z kodem ale data nie została pokazano w uidatepicker ..w go pocieszyć pokazuje jak ten 12.10.2012 15: 20: 39,363 Krwi [4398: 207] minDate 1912 -10-12 09:27:19 +0000 2012-10-12 15: 20: 39.364 Krwi [4398: 207] maxDate1994-10-12 09:50:39 +0000 – sabir

2

Oto metoda viewDidLoad widzenia klasie kontrolera

- (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]; 

} 

moje wyjście jest

enter image description here

można proszę podzielić się wyjście jako zrzut ekranu?

+0

Próbowałem, ale nie dostałem żadnej rzeczy. nie blokując jego pokazywania wszystkich poprzednich lat !! nie jestem w stanie załączyć zrzut ekranu stos nie akceptuje dołączania obrazu do mnie. data wyboru wyświetla jego normalną bieżącą datę tylko – sabir

+0

czy wypróbowałeś mój kod? Stworzyłem datepicker z kodu również spróbuj tego i mam nadzieję, że to zadziała – abhishekkharwar

+0

Ya Abishek dzięki pracy i tutaj moje dni i miesiące również zamknięte, ale nie chcę zablokować moich miesięcy i dni, muszę zamknąć tylko lata możesz pomóc w tym – sabir