【问题标题】:EKEventEditViewController doesn't dismissEKEventEditViewController 不会关闭
【发布时间】:2018-12-03 09:09:31
【问题描述】:

我在 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)
}

一切正常,控制器显示出来,但只要我按下“添加”或“取消”,除了以下控制台输出之外什么都没有发生:

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

【问题讨论】:

    标签: ios swift eventkit


    【解决方案1】:

    好的,错误出在其他地方,我的错。我在代码中创建 CalendarHelper 并且没有将其作为类的属性保存,因此一旦显示日历,助手就被删除并且不再可用作委托。

    private var calendarHelper:CalendarHelper?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        calendarHelper = CalendarHelper(delegate: self)
    }
    
    func showCalendar() {
        calendarHelper.showCalendar()
    }
    

    而不是

    func showCalendar() {
        CalendarHelper(delegate: self).showCalendar()
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 2018-10-25
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多