0

在我的应用程序中,我想要 iOS 日历应用程序之类的东西,所以我正在使用 MBCalanderKit 库。在我的应用程序中,我不想使用 CKCalendarViewController,因为我需要将日历添加为子视图。

为此,我正在使用以下代码。我正在使用 xCode 7 和 swift 2.3

import MBCalendarKit

class ViewController: UIViewController {

    var calanderView : CKCalendarView!
    
    var data = [NSDate : AnyObject]()
    override func viewDidLoad() {
        super.viewDidLoad()
        
        loadData()
        
        calanderView = CKCalendarView(frame: self.view.frame)
        calanderView.autoresizingMask = [.FlexibleWidth,.FlexibleHeight]
        
        calanderView.delegate = self
        calanderView.dataSource = self
        
        
        self.view.addSubview(calanderView)
        
    }
    
    func loadData(){
        let date = NSDate(day: 12, month: 12, year: 2016)
        let event1 = CKCalendarEvent(title: "Birthday Event", andDate: date, andInfo: nil, andColor: UIColor.redColor())
        
        let date2 = NSDate(day: 15, month: 12, year: 2016)
        let event2 = CKCalendarEvent(title: "Party Event", andDate: date2, andInfo: nil, andColor: UIColor.redColor())
        
        let date3 = NSDate(day: 17, month: 12, year: 2016)
        let event3 = CKCalendarEvent(title: "Marriage Event", andDate: date3, andInfo: nil, andColor: UIColor.redColor())
        
        let date4 = NSDate(day: 20, month: 12, year: 2016)
        let event4 = CKCalendarEvent(title: "Splecal Event", andDate: date4, andInfo: nil, andColor: UIColor.redColor())
        
        let date5 = NSDate(day: 25, month: 12, year: 2016)
        let event5 = CKCalendarEvent(title: "Special Event", andDate: date5, andInfo: nil, andColor: UIColor.redColor())
        
        
        data[date] = [event1]
        data[date2] = [event2]
        data[date3] = [event3]
        data[date4] = [event4]
        data[date5] = [event5]

    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

extension ViewController : CKCalendarViewDataSource{
    func calendarView(calendarView: CKCalendarView!, eventsForDate date: NSDate!) -> [AnyObject]! {
        if let dt = date{
            if data[dt] != nil{
                return [self.data[dt]!]
            }
        }
        return nil
    }
}
extension ViewController : CKCalendarViewDelegate{
    
}

但我的问题是当我运行这段代码时,我没有得到想要的输出。这是我的屏幕截图

在此处输入图像描述

请帮我。

4

2 回答 2

0

你做的一切都是对的。直到最近,MBCalendarKit 还不能很好地与 Auto Layout 配合使用。这是我的一个失败,但它在版本 5 中得到了修复。您应该能够使用最新版本的 MBCalendarKit 运行它。

如果你仍然需要这个并且想尝试一下,你可以使用类似下面的代码:

func presentCalendar() 
{
  let calendarVC = CalendarViewController()
  calendarVC.dataSource = self
  calendarVC.delegate = self
  self.present(calendarVC, animated:true, completion: nil)
}

一些注意事项:

  1. 在 MBCalendarKit 5 中,CK 前缀已从 Swift 互操作性标头中删除。(CKCalendarView变成CalendarViewCKCalenderEvent变成CalendarEvent等)
  2. 在 MBCalendarKit 5 中,您无法从中获取表格视图CalendarView- 您需要使用CalendarViewController.
  3. 披露:我是MBCalendarKit.
于 2017-08-20T12:31:16.727 回答
0

我也遇到了同样的问题只需将视图控制器嵌入导航控制器并在视图控制器视图顶部添加 UIView 为 UIView 创建一个出口

@IBOutlet var yourAddedView:UIView!

var 日历 = CKCalendarView()

覆盖 func viewDidLoad() {

    super.viewDidLoad()

    calendar?.dataSource = self
    calendar?.delegate = self

self.yourAddedView.addSubview(日历!)

}

于 2017-01-13T04:51:34.290 回答