我成功地转换了这个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)")
}
}
您的问题并不是很具体,因为您面临的实际问题是什么。因此,如果我的答案不是您想要的,请提供更多细节,我会尽我所能提供帮助。
我以前没有使用过这个库,但我看了一下代码和我对它的看法,这个问题有两个部分:
1.从逻辑上选择多个日期:如果这是唯一的问题,那么这一部分就会很简单,因为每次选择日期时都会回调到didSelectDate
。因此,从技术上讲,您可以在CalendarViewController
中设置一个数组,并将所有选定的日期保留在其中。但这种解决方案并不好,因为你会错过视觉表现,用户体验也会很糟糕。
2.在屏幕上直观地显示您的选择:不幸的是,如果不修改实际库的代码以支持多项选择,我看不到解决这一问题的方法。具体地说是两个类:MonthCollectionCell.swift
和CalendarView.swift
。主要是将selectedDate
切换为一个称为selectedDates
的阵列,并始终支持它。
编辑:
-
所以我一直在摆弄代码,试图更好地解释它,最终在我的fork中添加了完整的功能:https://github.com/XemaCobra/Calendar
-
要了解需要什么,请检查提交和所做的更改:https://github.com/XemaCobra/Calendar/commit/b9efa01f7ac5ae56bc0bdd72b3eeb1b618dbb00e
-
ViewController.swift
中注释的代码应该解释如何使用它
希望对你有用。