我正在寻找如何在CKCalendar中禁用过去的日期。例如,我想禁用当前日期之前的所有日期。只有今天的日期和未来的日期必须是可点击的。
dvtswwa31#
除了Larme的注解(设置calendar:willSelectDate为过去的日期返回NO)之外,如果要为那些“禁用的日期”配置颜色,可以通过设置委托方法configureDateItem来实现:日期:。举个例子:
- (void)calendar:(CKCalendarView *)calendar configureDateItem:(CKDateItem *)dateItem forDate:(NSDate *)date { if([date laterDate:minimumDate] == minimumDate) { dateItem.textColor = [UIColor grayColor]; } }
上面的代码将所有过去日期的文本颜色设置为灰色。
willSelectDate委托方法的一个示例:
- (BOOL)calendar:(CKCalendarView *)calendar willSelectDate:(NSDate *)date { if ([date laterDate:minimumDate] == minimumDate) { return NO; } return [calendar dateIsInCurrentMonth:date]; }
上面的代码禁止选择所有过去的日期。
bq8i3lrv2#
只要给予这个条件
calendar.onlyShowCurrentMonth=YES;
zengzsys3#
如果您正在寻找SwiftUI解决方案..首先,如果您想使以前的日期不可选,您需要使部分范围从
let dateRange: PartialRangeFrom<Date> = { let calendar = Calendar.current let startComponents = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: Date.now) return calendar.date(from: startComponents)!... }()
则可以配置日期选择器,传递您刚刚创建的
DatePicker("", selection: $dueDate, in: dateRange) .datePickerStyle(.graphical) .labelsHidden()
3条答案
按热度按时间dvtswwa31#
除了Larme的注解(设置calendar:willSelectDate为过去的日期返回NO)之外,如果要为那些“禁用的日期”配置颜色,可以通过设置委托方法configureDateItem来实现:日期:。
举个例子:
上面的代码将所有过去日期的文本颜色设置为灰色。
willSelectDate委托方法的一个示例:
上面的代码禁止选择所有过去的日期。
bq8i3lrv2#
只要给予这个条件
zengzsys3#
如果您正在寻找SwiftUI解决方案..
首先,如果您想使以前的日期不可选,您需要使部分范围从
则可以配置日期选择器,传递您刚刚创建的