在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 }