Невозможно добавить максимальную и минимальную дату в DatePicker

Я пытаюсь установить максимальное и минимальное значения для моего средства выбора даты, но оно не устанавливает эти свойства правильно.

Я сделал это, как показано ниже:

    - (void)viewDidLoad {
    [super viewDidLoad];

    [self setLimitForDatePicker];
    birthdayTextField.inputView = _dateWithYearPicker;
}
-(void)awakeFromNib
{
    _dateWithYearPicker = [[UIDatePicker alloc] init];
    _dateWithYearPicker.datePickerMode = UIDatePickerModeDate;
    [_dateWithYearPicker addTarget:self action:@selector(datePickerDateDidChange) forControlEvents:UIControlEventValueChanged];
}
-(void)setLimitForDatePicker
{
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *currentDate = [NSDate date];
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setYear:-16];
    NSDate *minDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];
    [comps setYear:-110];
    NSDate *maxDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];
    _dateWithYearPicker.minimumDate = minDate;
    _dateWithYearPicker.maximumDate = maxDate;
}

После этого, когда я запускаю приложение и нажимаю на поле BirthdayTextField, у средства выбора даты нет ограничений.

Все ваши предложения приветствуются.


person Ali    schedule 06.02.2015    source источник
comment
Является ли _dateWithYearPicker нулем в setLimitForDatePicker?   -  person KudoCC    schedule 06.02.2015
comment
Нет, он устанавливается из метода awakeFromNib.   -  person Ali    schedule 06.02.2015


Ответы (1)


Я нашел проблему.

Я поменял минимальную и максимальную дату, правильный ответ:

NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setYear:-110]; //before it was 16
    NSDate *minDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];
    [comps setYear:-16]; // before it was 110
    NSDate *maxDate = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];
    _dateWithYearPicker.minimumDate = minDate;
    _dateWithYearPicker.maximumDate = maxDate;
person Ali    schedule 06.02.2015