【问题标题】:FSCalendar jumps to year 1970FSCalendar 跳转到 1970 年
【发布时间】:2017-09-18 19:20:54
【问题描述】:

我正在尝试使用 Dispatch 主队列重新加载 FSCalendar。 它工作正常,但它会导致日历一直跳回 1970 年 我怎样才能防止这种情况发生?或再次将日期设置为当前日期? 这是我的代码:

DispatchQueue.main.async {

    self.calendar.firstWeekday = 7
    self.calendar.locale = Locale(identifier: "fa_IR")
    self.calendar.select(Date())
    self.calendar.identifier = NSCalendar.Identifier.persian.rawValue
    self.calendar.reloadData()
}

顺便说一句,这个问题与 Dispatch 无关。以其他形式重新加载它也会导致同样的问题。

【问题讨论】:

  • 我从未使用过FSCalendar,但您确定calendar.reloadData() 不应该在您更改数据后发生吗?对我来说,首先更改数据然后重新加载日历似乎是合乎逻辑的方法。
  • @DávidPásztor 试过了。不幸的是,它并不能解决问题,
  • 1970 年的日期通常表示实际的日期时间戳已设置为 0,或缺失。我没有使用 FSCalendar,但我会检查它是否获得了非零日期值。
  • @TomHarrington 这不是这种情况。如果这是问题,当我删除 reloadData() 时日历应该仍然有问题。但这不会发生
  • @Farbod 除非它是作为调用 reloadData 的副作用而发生的。

标签: ios swift reload reloaddata fscalendar


【解决方案1】:

对于当前日期,您必须首先获取当前月份的位置。为此,您必须添加FSCalendarDelegate 的两个方法

func calendar(_ calendar: FSCalendar, shouldSelect date: Date, at monthPosition: FSCalendarMonthPosition)   -> Bool {
    return monthPosition == .current
}

func calendar(_ calendar: FSCalendar, shouldDeselect date: Date, at monthPosition: FSCalendarMonthPosition) -> Bool {

    return monthPosition == .current
}

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2013-01-20
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    相关资源
    最近更新 更多