FSCalendar 'didSelect' - 事件触发太迟?
FSCalendar 'didSelect'-Event fires too late?
希望你到目前为止过得愉快...
我正在尝试使用 FSCalendar
库在 Swift iOS 中构建一个日历应用程序,并且效果很好。现在在字典中我保存了日期和这个日期的匹配数据,所以这就是我现在所说的 post.
中的事件
并且当用户点击与字典中数据匹配的日期时,我尝试在标签中显示数据。
为此,我制作了 appDelegate,如 cocoa pods-FSCalendar 主页中所述...
func calendar(_ calendar: FSCalendar, didDeselect date: Date, at monthPosition: FSCalendarMonthPosition) {
let dateString = stringFromDate(date as Date)
print(dateString)
print(dateprotocol.keys.contains(dateString))
if(dateprotocol.keys.contains(dateString)){
calendarlabel.text = dateprotocol[dateString]
}
}
所以我知道事件不是 100% 相同的,但没有这样的。一个名为 'didSelectDate' 的事件,例如 https://cocoapods.org/pods/FSCalendar,当我手动输入该事件时,该事件不会触发。
否则在我的代码示例中它触发得太晚了,所以当我选择事件所在的日期时,数据将被显示,只有当我 select 我点击带有数据的那个日期后的另一个日期时...任何想法为什么或如何解决这个问题?也许以编程方式调用其他日期?
您似乎是在 didDeselect date
委托函数而不是 didSelect date
中执行此操作。这就解释了为什么事件会在下一个选择时触发 :-)
如果您说 didSelect
函数在您尝试包含它时没有出现在您的建议中,请确保您的 ViewController 是否已确认FSCalendarDelegate
和 FSCalendarDataSource
如下所示, 使用 didSelect
函数 而不是你的函数:
extension YourViewController: FSCalendarDelegate,FSCalendarDataSource {
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
// Do the same inside this function and you should be fine
let dateString = stringFromDate(date as Date)
print(dateString)
print(dateprotocol.keys.contains(dateString))
if(dateprotocol.keys.contains(dateString)){
calendarlabel.text = dateprotocol[dateString]
}
}
}
希望对您有所帮助,祝您玩得愉快!
希望你到目前为止过得愉快...
我正在尝试使用 FSCalendar
库在 Swift iOS 中构建一个日历应用程序,并且效果很好。现在在字典中我保存了日期和这个日期的匹配数据,所以这就是我现在所说的 post.
并且当用户点击与字典中数据匹配的日期时,我尝试在标签中显示数据。 为此,我制作了 appDelegate,如 cocoa pods-FSCalendar 主页中所述...
func calendar(_ calendar: FSCalendar, didDeselect date: Date, at monthPosition: FSCalendarMonthPosition) {
let dateString = stringFromDate(date as Date)
print(dateString)
print(dateprotocol.keys.contains(dateString))
if(dateprotocol.keys.contains(dateString)){
calendarlabel.text = dateprotocol[dateString]
}
}
所以我知道事件不是 100% 相同的,但没有这样的。一个名为 'didSelectDate' 的事件,例如 https://cocoapods.org/pods/FSCalendar,当我手动输入该事件时,该事件不会触发。
否则在我的代码示例中它触发得太晚了,所以当我选择事件所在的日期时,数据将被显示,只有当我 select 我点击带有数据的那个日期后的另一个日期时...任何想法为什么或如何解决这个问题?也许以编程方式调用其他日期?
您似乎是在 didDeselect date
委托函数而不是 didSelect date
中执行此操作。这就解释了为什么事件会在下一个选择时触发 :-)
如果您说 didSelect
函数在您尝试包含它时没有出现在您的建议中,请确保您的 ViewController 是否已确认FSCalendarDelegate
和 FSCalendarDataSource
如下所示, 使用 didSelect
函数 而不是你的函数:
extension YourViewController: FSCalendarDelegate,FSCalendarDataSource {
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
// Do the same inside this function and you should be fine
let dateString = stringFromDate(date as Date)
print(dateString)
print(dateprotocol.keys.contains(dateString))
if(dateprotocol.keys.contains(dateString)){
calendarlabel.text = dateprotocol[dateString]
}
}
}
希望对您有所帮助,祝您玩得愉快!