在FScalendar中快速禁用将来的dateselect
我在我的项目中使用https://github.com/WenchaoD/FSCalendar 。 MaximumSelectedDate是一个只读属性。那么如何禁用未来的date呢?
解决方法可能是编辑FSCalendar
方法文件。 首先创build一个boolvariables,比如说isAllowedToLimitFutureDates
和一个stringvariablesmaxValidFutureDateAsString
然后将这个链接的第172行改为:
if(!isAllowedToLimitFutureDates) { _maximumDate = [self.formatter dateFromString:@"2099-12-31"]; } else { _maximumDate = maxValidFutureDateAsString; // say "2017-03-13" }
所以当你想限制date设置isAllowedToLimitFutureDates = true
。
类似的方法行1707。
如果你不能编辑文件和使用POD,那么你可以自定义这个控件并覆盖它们。
希望有所帮助!
你应该使用委托方法来解决这个问题
func maximumDate(for calendar: FSCalendar) -> Date { return Date() }
@Devraj的答案是正确的,有最小和最大date的代表,所有你需要做的是在符合FSCalendarDelegate
的控制器中实现正确的(在你的情况下的后者),并会做的伎俩。
func maximumDateForCalendar(calendar: FSCalendar) -> NSDate { return NSDate() // NSDate of your choosing here }
为Swift 3
fileprivate lazy var dateFormatter2: DateFormatter = { let formatter = DateFormatter() formatter.dateFormat = "dd-MM-yyyy" return formatter }() let today = dateFormatter2.string(from: calendar.selectedDate!) let dateObj = dateFormatter2.date(from: today) if dateObj! > calendar.today! { // Your logic here }