如何在目标c中设置MDDatePicker中的最大日期

时间:2017-05-03 06:08:58

标签: ios objective-c

我正在设置最长日期但无法禁用剩余日期 示例如 - 出生日期选择。

任何人都有这个想法。 提前致谢。 enter image description here

3 个答案:

答案 0 :(得分:0)

-(void) dateTextField:(id)sender
{
    UIDatePicker *picker = (UIDatePicker*) dateOfBirthField.inputView;
   // [picker setMaximumDate:[NSDate date]];
    [picker setMinimumDate:[NSDate date]];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    NSDate *eventDate = picker.date;
   [dateFormat setDateFormat:@"yyyy/MM/dd"];

   NSString *dateString = [dateFormat stringFromDate:eventDate];
   dateOfBirthField.text = [NSString stringWithFormat:@"%@",dateString];
}

答案 1 :(得分:0)

MDDatePickerDialog班级使用MDCalendar来管理其最短日期。如果您要查看MDCalendar的实现,您会在initialize方法中找到以下实现:

_maximumDate = [NSDateHelper mdDateWithYear:2037 month:12 day:31];

首先尝试将此日期设置为您选择的静态值以查看这是必需变量,然后您可以将此属性声明移动到MDCalendar的标头文件,以使此maximumDate变量可在外部访问班级。下一步,您可以在MDDatePickerDialog中创建一个属性,以设置最大日期与设置最小日期的方式相同。

来自MDDatePicker.m档案

的部分
- (void)setMinimumDate:(NSDate *)minimumDate {
    self.calendar.minimumDate = minimumDate;
}

P.S。请记住处理日期验证,例如日期应该有效,最长日期不应早于最短日期等。

希望有所帮助!

答案 2 :(得分:0)

你只需添加日期,无论你想做什么,这里我只需要从当前日期选择一个星期,所以这里是我写的代码,你在那里显示日期选择器只需添加一行:

- _datePicker.maximumDate = [[NSDate date] dateByAddingTimeInterval:60*60*24*7]; ;

之后,将此方法搜索到MDCalender.m文件中并替换为此代码。

- (BOOL)shouldSelectDate:(NSDate *)date {
    BOOL result;
    if ([self.maximumDate timeIntervalSince1970] >= date.timeIntervalSince1970 ) {
        result =
        (date.timeIntervalSince1970 >= self.minimumDate.timeIntervalSince1970);
        return result;
    }
    return result;
}

它对我有用。感谢