2013-09-03 2 views
0

В последнее время я борется с максимальной/минимальной датой, и, честно говоря, я не знаю, чего мне здесь не хватает. Я много искал, и никто, кажется, не жалуется на это. (Я не говорю о настройке максимальной/минимальной даты, как это может сделать только недействительные даты отображаются серым цветом)iOS Datepicker: как заблокировать недействительные даты?

Вот что я сделал до сих пор:

[myDatePicker addTarget:self action:@selector(disableDate) forControlEvents:UIControlEventValueChanged]; 

Затем на disableDate, у меня есть что-то вроде этого:

if ([myDatePicker.date compare:[NSDate date]] == NSOrderedDescending) { 
     MyDatePicker.date = [NSDate date]; 
    } 

(или восходящие, это зависит от того, какие даты я хочу, чтобы отключить)

дело в том: она работает нормально, но только ОДИН РАЗ. Другими словами: как только я открываю представление и пытаюсь выбрать, например, 2007, он прокручивается до 2013 года. Отлично. Но сразу после этого, если я попытаюсь прокрутить любую недействительную дату (включая 2007), она больше не будет прокручиваться, пока я не открою мое представление. Я чувствую, что мне здесь что-то не хватает, но я не знаю, что.

Большое спасибо!

PS: Просто говоря, я поместил это в disableDate

NSLog(@"Value changed"); 

просто чтобы убедиться, что это вызов метода каждый раз я прокручивать DatePicker, и да, это работает;

PS2: Я пробовал то же самое, но с использованием

- (IBAction)datePickerValueChanged:(id) sender 

вместо, и это было точно такое же поведение.

+0

Тир с помощью '[myDatePicker reloadInputViews];' после установки даты – danypata

+0

. это не сработало:/ – user2743901

+0

На самом деле это было! Я делал ошибку раньше! Спасибо вам большое! – user2743901

ответ

1

Так что для того, чтобы "сброса" UIDatePicker вы можете использовать reloadInputViews метод (с UIDatePicker является подклассом UIResponder

Edit: орфография

Смежные вопросы