web-dev-qa-db-fra.com

Comment désactiver les dates, mois et années futurs dans UIDatePicker?

Comment masquer les dates futures dans UIDatePicker pour un utilisateur ne choisissant que l'année de naissance passée et en cours.

Je recherche beaucoup de source mais je ne peux pas obtenir le résultat souhaité.

Voici mon code,

 dateofBirthDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];

    dateofBirthDatePicker.datePickerMode = UIDatePickerModeDate;
    [dateofBirthDatePicker setBackgroundColor:DATE_PICKER_GRAY_COLOR];

//    UILabel *label = [UILabel appearanceWhenContainedIn:[UITableView class],[UIDatePicker class], nil];
//    label.font = HELVETICA_NEUE(24);
//    label.textColor = GREEN_COLOR;
    [dateofBirthDatePicker addTarget:self
                              action:@selector(LabelChange:)
                    forControlEvents:UIControlEventValueChanged];
    dateofbirthTextField.inputView = dateofBirthDatePicker;
    [self datePickerToolBar];
}

- (void)LabelChange:(id)sender
{
    NSDateFormatter *dateFormat= [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd/MM/yyyy"];
    dateofbirthTextField.text = [NSString stringWithFormat:@"%@",
                                [dateFormat stringFromDate:dateofBirthDatePicker.date]];
}

Si un organisme connaît la solution, merci de donner la suggestion. Je vous apprécie vraiment.

13
user3683408

Voici le code simple pour empêcher la sélection de date future:

dateofBirthDatePicker.maximumDate=[NSDate date];
40
Mawoon

Dans Swift 2:

self.datePicker.maximumDate = NSDate()

Dans Swift 3:

self.datePicker.maximumDate = Date()

11
Phil Hudson

Dans Swift 4.0.3 Xcode 9

Masquer la date future

self.picker.maximumDate = Date()
3
Keshav Gera

Vous pouvez utiliser setMaximumDate: et setMinimumDate: sur l'objet UIDatePicker:

[dateofBirthDatePicker setMaximumDate:[NSDate date]]; // The max date will be today

// Optional you can set up min date as well
[dateofBirthDatePicker setMinimumDate:yourMinDate];
2
Greg
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:1];
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[comps setYear:-30];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];

[datePicker setMaximumDate:maxDate];
[datePicker setMinimumDate:minDate];
0
Pancho