简体   繁体   English

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

[英]Swift: No Calendar showing up in EKEventEditViewController and error message (no crash)

So, My goal is to present the EKEventEditViewController to directly edit an event, without going through the "edit button" on the EKEventViewCOntroller.因此,我的目标是呈现 EKEventEditViewController 以直接编辑事件,而无需通过 EKEventViewCONtroller 上的“编辑按钮”。

I simply Wanna tap the event, and instantly open the EkEventEditViewController.我只是想点击事件,然后立即打开 EkEventEditViewController。

I've come far.我已经走了很远。 It´s fetching the right Event and everything, and when I use the EKEventViewController It´s all working fine, however, when I call the EKEventEditViewController the event loads up inte editor with all the data (like startdate, title etc) but without the choice to pick Calendar.它正在获取正确的事件和所有内容,当我使用 EKEventViewController 时一切正常,但是,当我调用 EKEventEditViewController 时,事件会加载具有所有数据(如开始日期、标题等)的内部编辑器,但没有选择选择日历。 I also Can't save any changes when this happens.发生这种情况时,我也无法保存任何更改。

I can Create new events however, so I know that It´s working in that perspective.然而,我可以创建新事件,所以我知道它在那个角度工作。

I also get this error message in console, but without the app crashing:我也在控制台中收到此错误消息,但应用程序没有崩溃:

2020-09-26 00:36:30.795794+0200 MyCali[22214:848008] [EventEditor] -[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - Location Inline Edit Item didn't have a text label on its non conference location cell; 2020-09-26 00:36:30.795794+0200 MyCali[22214:848008] [EventEditor] -[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - 位置内联编辑项在其非会议位置单元格上没有文本标签; will return NO 2020-09-26 00:36:30.796328+0200 MyCali[22214:848008] Calendar: unable to save: (null)将返回 NO 2020-09-26 00:36:30.796328+0200 MyCali[22214:848008] 日历:无法保存:(空)

here´s the code for calling the EKEventEditViewController:这是调用 EKEventEditViewController 的代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 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)
 
        
    }

the picture shows the Cannot Save statement.图为Cannot Save语句。 另请注意,日历行不存在

This was stupid of me, but I'll share the answer if anyone (less likely) stumbles upon this.这对我来说很愚蠢,但如果有人(不太可能)偶然发现这一点,我会分享答案。 I had forgotten to set the Eventstore.我忘记设置 Eventstore。

The evenstore is where the events are stored (the Calendar). Evenstore 是存储事件的地方(日历)。 So by not setting this, my event had no calendar to store itself into upon being edited, thus I got this error message.因此,通过不设置此项,我的活动在编辑时没有日历可以存储,因此我收到了此错误消息。

All I did to solve this was adding:我为解决这个问题所做的只是添加:

EventVC.eventStore = eventStore EventVC.eventStore = eventStore

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM