如何解决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)
}
解决方法
这对我来说很愚蠢,但是如果有人(不太可能)偶然发现这个问题,我将分享答案。我忘了设置事件存储。
evenstore是事件存储的位置(日历)。因此,通过不设置此设置,我的事件在编辑后便没有日历可存储到其中,因此我收到了此错误消息。
我为解决这个问题所做的就是添加:
EventVC.eventStore = eventStore
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。