4

我在我的项目中使用https://github.com/WenchaoD/FSCalendar 。MaximumSelectedDate 是一个只读属性。那么如何禁用未来的日期呢?

4

4 回答 4

13

您应该使用委托方法来解决这个问题

func maximumDate(for calendar: FSCalendar) -> Date {
    return Date()
}
于 2017-06-15T01:31:53.793 回答
1

一种解决方法可能是编辑FSCalendar方法文件。首先创建一个布尔变量,比如说isAllowedToLimitFutureDates和一个字符串变量,然后将此链接maxValidFutureDateAsString的第 172 行更改为:

 if(!isAllowedToLimitFutureDates)
 {
     _maximumDate = [self.formatter dateFromString:@"2099-12-31"];
 }
 else
 {
     _maximumDate = maxValidFutureDateAsString; // say "2017-03-13"
 }

所以当你想限制日期时isAllowedToLimitFutureDates = true

与第 1707 行类似的方法。

如果您无法编辑文件和使用的 POD,则可以自定义此控件并覆盖它们。

希望有帮助!

于 2017-03-13T10:16:12.093 回答
0

斯威夫特 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
  }
于 2017-08-23T08:00:41.400 回答
0

@Devraj 的答案是正确的,最小最大日期都有代表,您需要做的就是在符合要求的控制器中实现正确的一个(在您的情况下为后一个),FSCalendarDelegate这样就可以了。

func maximumDateForCalendar(calendar: FSCalendar) -> NSDate { return NSDate() // NSDate of your choosing here }

于 2017-06-24T23:32:58.503 回答