首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MBCalanderKit将日历添加为子视图

MBCalanderKit将日历添加为子视图
EN

Stack Overflow用户
提问于 2016-12-21 21:30:07
回答 2查看 238关注 0票数 0

在我的应用程序中,我想要一些像iOS日历应用程序,所以我使用的是MBCalanderKit库。在我的应用程序中,我不想使用CKCalendarViewController,因为我需要添加日历作为子视图。

为此,我使用了以下代码。我正在使用带有swift 2.3的xCode 7

代码语言:javascript
复制
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{
    
}

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

请帮帮我。

EN

回答 2

Stack Overflow用户

发布于 2017-01-13 12:51:34

我也遇到过同样的问题,只是将视图控制器嵌入到导航控制器中,并在视图控制器视图的顶部添加UIView,为UIView提供一个出口

@IBOutlet var yourAddedView: UIView!

var日历= CKCalendarView()

重写函数viewDidLoad() {

代码语言:javascript
复制
    super.viewDidLoad()

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

Self.yourAddedView.addSubview(日历!)

}

票数 0
EN

Stack Overflow用户

发布于 2017-08-20 20:31:17

你做的一切都是对的。直到最近,MBCalendarKit在自动布局方面的表现都不是很好。这是我的一个错误,但它已经在版本5中修复了。你应该能够在最新版本的MBCalendarKit中运行它。

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

代码语言:javascript
复制
func presentCalendar() 
{
  let calendarVC = CalendarViewController()
  calendarVC.dataSource = self
  calendarVC.delegate = self
  self.present(calendarVC, animated:true, completion: nil)
}

一些注意事项:

  1. 在MBCalendarKit 5中,从Swift互操作性报头中删除了CK前缀。(CKCalendarView变成了CalendarViewCKCalenderEvent变成了CalendarEvent,等等)
  2. 在MBCalendarKit 5中,你不能从CalendarView获得表视图--你需要使用CalendarViewController
  3. 披露:我是MBCalendarKit.

的作者

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41263954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档