微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Swift:EKEventEditViewController中没有显示日历和错误消息没有崩溃

因此,我的目标是提供EKEventEditViewController来直接编辑事件,而无需通过EKEventViewCOntroller上的“编辑按钮”。

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

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

但是我可以创建新事件,所以我知道它在这种情况下起作用。

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

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

以下是用于调用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)
 
        
    }

图片显示了Cannot Save语句。

Also note that the Calendar line is not there

解决方法

这对我来说很愚蠢,但是如果有人(不太可能)偶然发现这个问题,我将分享答案。我忘了设置事件存储。

evenstore是事件存储的位置(日历)。因此,通过不设置此设置,我的事件在编辑后便没有日历可存储到其中,因此我收到了此错误消息。

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

EventVC.eventStore = eventStore

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。