禁用 FScalendar 中的未来日期选择 swift
Disable future dates selection in FScalendar swift
我在我的项目中使用 https://github.com/WenchaoD/FSCalendar。 MaximumSelectedDate 是一个只读 属性 。那么如何禁用未来日期?
一种解决方法是编辑 FSCalendar
方法文件。首先制作一个布尔变量,比如 isAllowedToLimitFutureDates
和一个字符串变量 maxValidFutureDateAsString
然后将 this link 的第 172 行更改为:
if(!isAllowedToLimitFutureDates)
{
_maximumDate = [self.formatter dateFromString:@"2099-12-31"];
}
else
{
_maximumDate = maxValidFutureDateAsString; // say "2017-03-13"
}
所以当你想限制日期设置时isAllowedToLimitFutureDates = true
。
与第 1707 行类似的方法。
如果您无法编辑文件并使用 PODs,那么您可以自定义此控件并覆盖它们。
希望对您有所帮助!
您应该使用委托方法来解决这个问题
func maximumDate(for calendar: FSCalendar) -> Date {
return Date()
}
@Devraj 答案是正确的,最小 和最大 日期都有代表,您需要做的就是实施适当的控制器中符合 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
}
我在我的项目中使用 https://github.com/WenchaoD/FSCalendar。 MaximumSelectedDate 是一个只读 属性 。那么如何禁用未来日期?
一种解决方法是编辑 FSCalendar
方法文件。首先制作一个布尔变量,比如 isAllowedToLimitFutureDates
和一个字符串变量 maxValidFutureDateAsString
然后将 this link 的第 172 行更改为:
if(!isAllowedToLimitFutureDates)
{
_maximumDate = [self.formatter dateFromString:@"2099-12-31"];
}
else
{
_maximumDate = maxValidFutureDateAsString; // say "2017-03-13"
}
所以当你想限制日期设置时isAllowedToLimitFutureDates = true
。
与第 1707 行类似的方法。
如果您无法编辑文件并使用 PODs,那么您可以自定义此控件并覆盖它们。
希望对您有所帮助!
您应该使用委托方法来解决这个问题
func maximumDate(for calendar: FSCalendar) -> Date {
return Date()
}
@Devraj 答案是正确的,最小 和最大 日期都有代表,您需要做的就是实施适当的控制器中符合 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
}