Swift:EKEventEditViewController 中没有显示日历和错误消息(没有崩溃)

Posted

技术标签:

【中文标题】Swift:EKEventEditViewController 中没有显示日历和错误消息(没有崩溃)【英文标题】:Swift: No Calendar showing up in EKEventEditViewController and error message (no crash) 【发布时间】:2020-09-25 22:39:41 【问题描述】:

所以,我的目标是让 EKEventEditViewController 直接编辑事件,而无需通过 EKEventViewCONtroller 上的“编辑按钮”。

我只想点击事件,然后立即打开 EkEventEditViewController。

我已经走了很远。它正在获取正确的事件和所有内容,当我使用 EKEventViewController 时一切正常,但是,当我调用 EKEventEditViewController 时,事件会加载包含所有数据(如 startdate、title 等)的 inte 编辑器,但没有选择选择日历。发生这种情况时,我也无法保存任何更改。

但是我可以创建新事件,所以我知道它在这个角度工作。

我也在控制台中收到此错误消息,但应用程序没有崩溃:

2020-09-26 00:36:30.795794+0200 MyCali[22214:848008] [EventEditor] -[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - 位置内联编辑项目在其非会议位置单元格上没有文本标签;将返回 NO 2020-09-26 00:36:30.796328+0200 MyCali[22214:848008] 日历:无法保存:(null)

这里是调用 EKEventEditViewController 的代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

    func editEventViewController() 
           
        
        let calendar1 = Calendar.current
        var dateComponents = DateComponents.init()
        dateComponents.day = 1 // days from today
        
        
        
        let futureDate = calendar1.date(byAdding: dateComponents, to: calendar.today!)
        
        let eventsPredicate = eventStore.predicateForEvents(withStart: calendar.today!, end: futureDate!, calendars: nil)
        
    
        let fetchedEvents = eventStore.events(matching: eventsPredicate)
        
        dateFormatter.dateFormat = "yyyy-MM-dd-hh:mm"
        
        let eventVC = EKEventEditViewController()
        let eventID = String(fetchedEvents[indexPath.row].eventIdentifier)
        
        eventVC.event = eventStore.event(withIdentifier: eventID)
        eventVC.editViewDelegate = self // don't forget the delegate

        present(eventVC, animated: true)
 
        
    

图片显示无法保存语句。

【问题讨论】:

【参考方案1】:

这对我来说很愚蠢,但如果有人(不太可能)偶然发现这个问题,我会分享答案。我忘记设置 Eventstore。

eventstore 是存储事件的地方(日历)。因此,如果不设置这个,我的活动在编辑时没有日历可以存储,因此我收到了这个错误消息。

我为解决这个问题所做的只是添加:

EventVC.eventStore = eventStore

【讨论】:

以上是关于Swift:EKEventEditViewController 中没有显示日历和错误消息(没有崩溃)的主要内容,如果未能解决你的问题,请参考以下文章

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别

swift swift_extension5.swift

swift swift_optional4.swift