Не може да се добави максимална и минимална дата към 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;
}

След това, когато стартирам приложение и щракна върху текстовото поле за рождения ден, инструментът за избор на дата изглежда няма ограничения.

Всички ваши предложения са добре дошли.


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