在日历tvOS中选择多个日期

时间:2015-11-13 21:48:16

标签: swift calendar tvos

我设法将此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 个答案:

答案 0 :(得分:0)

您的问题并不是非常具体,因为您遇到的实际问题是什么。因此,如果我的回答不是你想要的,请详细说明,我会尽力帮助。

之前我没有使用过这个库,但我看了一下代码和我看到的方式,这个问题有2个部分:

<强> 1。按逻辑方式选择多个日期:如果这是唯一的问题,那么每次选择日期时都会回复didSelectDate,因此该部分很简单。因此,从技术上讲,您可以在CalendarViewController中设置一个数组,并将所有选定日期保留在那里。这个解决方案并不好,因为你会错过视觉表现,而UX也会很糟糕。

<强> 2。在屏幕上以可视方式显示您的选择:不幸的是,我没有看到解决此问题的方法,而无需修改实际库的代码以支持多个选择。特别是几个类:MonthCollectionCell.swiftCalendarView.swift。主要是将selectedDate切换为名为selectedDates的数组,并在整个过程中支持它。

修改

希望对你有用。