Swift:EKEventEditViewController 中没有显示日历和错误消息(没有崩溃)
Swift: No Calendar showing up in EKEventEditViewController and error message (no crash)
因此,我的目标是呈现 EKEventEditViewController 以直接编辑事件,而无需通过 EKEventViewCONtroller 上的“编辑按钮”。
我只是想点击事件,然后立即打开 EkEventEditViewController。
我已经很远了。它正在获取正确的事件和所有内容,当我使用 EKEventViewController 时一切正常,但是,当我调用 EKEventEditViewController 时,事件会加载包含所有数据(如开始日期、标题等)的集成编辑器,但没有选择日历。发生这种情况时我也无法保存任何更改。
但是我可以创建新事件,所以我知道它在那个角度上是有效的。
我也在控制台中收到此错误消息,但应用程序没有崩溃:
2020-09-26 00:36:30.795794+0200 MyCali[22214:848008] [EventEditor] -[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - 位置内联编辑项目在其非会议上没有文本标签定位单元;会 return 否
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)
}
图为无法保存语句。
这对我来说很愚蠢,但如果有人(不太可能)偶然发现这个问题,我会分享答案。我忘了设置 Eventstore。
evenstore 是存储事件的地方(日历)。因此,如果不设置此项,我的活动在编辑时就没有日历可将其自身存储到其中,因此我收到了此错误消息。
我为解决这个问题所做的就是添加:
EventVC.eventStore = eventStore
因此,我的目标是呈现 EKEventEditViewController 以直接编辑事件,而无需通过 EKEventViewCONtroller 上的“编辑按钮”。
我只是想点击事件,然后立即打开 EkEventEditViewController。
我已经很远了。它正在获取正确的事件和所有内容,当我使用 EKEventViewController 时一切正常,但是,当我调用 EKEventEditViewController 时,事件会加载包含所有数据(如开始日期、标题等)的集成编辑器,但没有选择日历。发生这种情况时我也无法保存任何更改。
但是我可以创建新事件,所以我知道它在那个角度上是有效的。
我也在控制台中收到此错误消息,但应用程序没有崩溃:
2020-09-26 00:36:30.795794+0200 MyCali[22214:848008] [EventEditor] -[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - 位置内联编辑项目在其非会议上没有文本标签定位单元;会 return 否 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)
}
图为无法保存语句。
这对我来说很愚蠢,但如果有人(不太可能)偶然发现这个问题,我会分享答案。我忘了设置 Eventstore。
evenstore 是存储事件的地方(日历)。因此,如果不设置此项,我的活动在编辑时就没有日历可将其自身存储到其中,因此我收到了此错误消息。
我为解决这个问题所做的就是添加:
EventVC.eventStore = eventStore