EKEventEditViewController 不会关闭
EKEventEditViewController doesn't dismiss
我在 Helper-Class 中展示我的 EKEventEditViewController
,如下所示:
func showAddAppointmentController(withDate date:Date) {
let eventVC = EKEventEditViewController()
eventVC.editViewDelegate = self
eventVC.eventStore = eventStore
eventVC.event?.title = "Test appointment"
eventVC.event?.startDate = date
eventVC.event?.endDate = date.addingTimeInterval(3600)
UIApplication.shared.keyWindow?.rootViewController?.present(eventVC, animated: true, completion: nil)
}
一切正常,显示了控制器,但是当我按下 "Add" 或 "Cancel" 时,没有任何反应,只有以下控制台输出:
[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - Location Inline Edit Item didn't have a text label on its non conference location cell; will return NO
我已经按如下方式实现了委托,但是没有调用该方法(不打印,断点也不起作用)
extension CalendarHelper : EKEventEditViewDelegate {
func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) {
print("Delegate called!")
controller.dismiss(animated: true) {
self.delegate?.didFinish()
}
}
}
好的,错误出在别处,是我的错。我在代码中创建了 CalendarHelper,而不是将其作为 class 的 属性 保存,因此一旦显示日历,助手就被删除并且不再作为委托可用。
private var calendarHelper:CalendarHelper?
override func viewDidLoad() {
super.viewDidLoad()
calendarHelper = CalendarHelper(delegate: self)
}
func showCalendar() {
calendarHelper.showCalendar()
}
而不是
func showCalendar() {
CalendarHelper(delegate: self).showCalendar()
}
我在 Helper-Class 中展示我的 EKEventEditViewController
,如下所示:
func showAddAppointmentController(withDate date:Date) {
let eventVC = EKEventEditViewController()
eventVC.editViewDelegate = self
eventVC.eventStore = eventStore
eventVC.event?.title = "Test appointment"
eventVC.event?.startDate = date
eventVC.event?.endDate = date.addingTimeInterval(3600)
UIApplication.shared.keyWindow?.rootViewController?.present(eventVC, animated: true, completion: nil)
}
一切正常,显示了控制器,但是当我按下 "Add" 或 "Cancel" 时,没有任何反应,只有以下控制台输出:
[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - Location Inline Edit Item didn't have a text label on its non conference location cell; will return NO
我已经按如下方式实现了委托,但是没有调用该方法(不打印,断点也不起作用)
extension CalendarHelper : EKEventEditViewDelegate {
func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) {
print("Delegate called!")
controller.dismiss(animated: true) {
self.delegate?.didFinish()
}
}
}
好的,错误出在别处,是我的错。我在代码中创建了 CalendarHelper,而不是将其作为 class 的 属性 保存,因此一旦显示日历,助手就被删除并且不再作为委托可用。
private var calendarHelper:CalendarHelper?
override func viewDidLoad() {
super.viewDidLoad()
calendarHelper = CalendarHelper(delegate: self)
}
func showCalendar() {
calendarHelper.showCalendar()
}
而不是
func showCalendar() {
CalendarHelper(delegate: self).showCalendar()
}