我设法将此iOS日历组件(https://github.com/lancy98/Calendar)转换为我的tvOS应用程序。现在我想选择多个日期来显示所选日期的报告。我怎样才能做到这一点 ?感谢
class CalendarViewController: UIViewController, CalendarViewDelegate {
@IBOutlet var placeholderView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// todays date.
let date = NSDate()
// create an instance of calendar view with
// base date (Calendar shows 12 months range from current base date)
// selected date (marked dated in the calendar)
let calendarView = CalendarView.instance(date, selectedDate: date)
calendarView.delegate = self
calendarView.translatesAutoresizingMaskIntoConstraints = false
placeholderView.addSubview(calendarView)
// Constraints for calendar view - Fill the parent view.
placeholderView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[calendarView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: ["calendarView": calendarView]))
placeholderView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[calendarView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: ["calendarView": calendarView]))
}
func didSelectDate(date: NSDate) {
print("\(date.year)-\(date.month)-\(date.day)")
}
}
答案 0 :(得分:0)
您的问题并不是非常具体,因为您遇到的实际问题是什么。因此,如果我的回答不是你想要的,请详细说明,我会尽力帮助。
之前我没有使用过这个库,但我看了一下代码和我看到的方式,这个问题有2个部分:
<强> 1。按逻辑方式选择多个日期:如果这是唯一的问题,那么每次选择日期时都会回复didSelectDate
,因此该部分很简单。因此,从技术上讲,您可以在CalendarViewController
中设置一个数组,并将所有选定日期保留在那里。这个解决方案并不好,因为你会错过视觉表现,而UX也会很糟糕。
<强> 2。在屏幕上以可视方式显示您的选择:不幸的是,我没有看到解决此问题的方法,而无需修改实际库的代码以支持多个选择。特别是几个类:MonthCollectionCell.swift
和CalendarView.swift
。主要是将selectedDate
切换为名为selectedDates
的数组,并在整个过程中支持它。
修改强>
所以我正在玩代码试图更好地解释它,并最终将完整的功能添加到我的分支:https://github.com/XemaCobra/Calendar
要了解所需内容,请检查提交和所做的更改: https://github.com/XemaCobra/Calendar/commit/b9efa01f7ac5ae56bc0bdd72b3eeb1b618dbb00e
ViewController.swift
中的注释代码应说明如何使用它。
希望对你有用。