2013-04-08 4 views
0

Я пытался настроить uidatepicker для бронирования некоторых событий в календаре. Мне нужно отключить (скрыть) определенные даты в моем UIDatePicker, например, дни, когда я уезжаю из города или в отпуск.Отключить конкретную дату в UIDatePicker

Помогите мне с этим? Thanx много вперед. Вот код:

- (void)viewDidLoad 
{ 


    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"IT"]; 
    [self.datePicker setLocale:locale]; 

    NSString *min = @"20132015"; 
    NSString *max = @"22132015"; 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"ddMMyyyy HH:mm"]; 
    NSDate *datemin = [dateFormat dateFromString:min]; 
    NSDate *datemax = [dateFormat dateFromString:max]; 
[self.view addSubview:datePicker]; 
datePicker.minuteInterval = 15; 
datePicker.maximumDate = datemax; 
datePicker.minimumDate = [NSDate date]; 

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

[datePicker addTarget:self 
       action:@selector(LabelChange:) 
     forControlEvents:UIControlEventValueChanged]; 


[super viewDidLoad]; 
// Do any additional setup after loading the view. 
} 

-(void)disableDate{ 

NSDate *pickedDate = datePicker.date; // Get current Date 
NSDate *disabledDate = [?????; 
if([pickedDate compare:disabledDate] == NSOrderedSame) 
{ 
    [datePicker setDate:disabledDate animated:YES]; 

} 
} 
     -(void)getDisableDate 
{ 
????? 
} 


- (void)LabelChange:(id)sender{ 


    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"dd.MM.yyyy HH:mm"]; 
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"IT"]; 
    [self.datePicker setLocale:locale]; 

    labelDate.text = [NSString stringWithFormat:@"%@", 
        [df stringFromDate:datePicker.date]]; 

    NSLog(@"date:%@", datePicker.date); 


} 

ответ

0

UIDatePicker не поддерживает диапазоны дат. Вместо этого я должен изменить дату, когда выбрана плохая дата, используя setDate:animated: до ближайшей даты, которую можно выбрать. Кроме того, чтобы показать сообщение где-то, объяснив, почему выбранная дата была изменена.

Либо это, либо написать собственный UIDatePicker, используя UIPickerView. Не слишком сложно, я делал это раньше. Худшая часть относится к значениям упаковки (например, 31 -> 1). Тем не менее, это связано с большей работой.

0

Лучшим решением является создание пользовательского UIDatePicker с использованием UIPickerView, это слишком просто, и в будущем вы можете легко делать изменения.

Проверьте link.

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