我使用爱彼迎的地平线日历,问题是当我点击超出范围的日期时,我无法将 selectedDateRange 设置为零。在这个日期选择逻辑中我错过了什么?
.days { day in
DayView(dayNumber: day.day, isSelected: isDaySelected(day))
.onTapGesture {
let dayDate = calendar.date(from: day.components)!
if let selectedDateRange = selectedDateRange {
if selectedDateRange.lowerBound == dayDate || selectedDateRange.upperBound == dayDate {
self.selectedDateRange = nil
} else {
if selectedDateRange.contains(dayDate) {
self.selectedDateRange = nil
} else {
self.selectedDateRange = min(selectedDateRange.lowerBound, dayDate)...max(selectedDateRange.upperBound, dayDate)
}
}
} else {
self.selectedDateRange = dayDate...dayDate
}
}
}
我尝试了所有可能的 if 条件但无法使其工作。
对于那些可能遇到这个问题的人。我用这行开关盒解决了问题
case let range? where range.lowerBound != dayDate && range.upperBound != dayDate && !range.contains(dayDate) && range.lowerBound != range.upperBound || range.contains(dayDate):