EKEventEditViewController не увольняет - PullRequest
0 голосов
/ 03 декабря 2018

Я представляю свой 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)
}

Все работает нормально, контроллер отображается, но как только я нажимаю «Добавить» или «Отмена»ничего не происходит, кроме следующего вывода на консоль:

[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()
        }
    }
}

1 Ответ

0 голосов
/ 03 декабря 2018

Хорошо, ошибка была где-то еще и моя плохая.Я создавал CalendarHelper в коде и не держал его как свойство класса, поэтому, как только календарь был показан, помощник был удален и больше не доступен как делегат.

private var calendarHelper:CalendarHelper?

override func viewDidLoad() {
    super.viewDidLoad()
    calendarHelper = CalendarHelper(delegate: self)
}

func showCalendar() {
    calendarHelper.showCalendar()
}

вместо

func showCalendar() {
    CalendarHelper(delegate: self).showCalendar()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...