我试图设置一个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 :(得分:0)
UIDatePicker不支持日期范围。我要做的是通过使用setDate:animated:
到最近的可选日期来改变选择错误日期的日期。此外,还要在某处显示一条消息,说明所选日期的更改原因。
或者,使用UIPickerView编写自己的自定义UIDatePicker。不太难,我以前做过。最糟糕的部分是处理包装值(例如:31 - > 1)。但是,涉及更多的工作。
答案 1 :(得分:0)
最佳解决方案是使用UIPickerView创建自定义UIDatePicker,这太容易了,以后您可以轻松地进行更改。
检查link。