ios - EKEventEditViewController 不会关闭

标签 ios swift eventkit

我在这样的助手类中展示我的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)
}

一切正常,显示了 Controller ,但是当我按下“添加”或“取消”时,除了以下控制台输出之外没有任何反应:

[EKCalendarItemLocationInlineEditItem isSubitemAtIndexSaveable:] - 位置内联编辑项在其非 session 位置单元格上没有文本标签;将返回 NO

我已经按如下方式实现了委托(delegate),但是没有调用该方法(不打印并且断点也不起作用)

extension CalendarHelper : EKEventEditViewDelegate {
    func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) {
        print("Delegate called!")
        controller.dismiss(animated: true) {
            self.delegate?.didFinish()
        }
    }
}

最佳答案

好的,错误出在别处,是我的错。我在代码中创建了 CalendarHelper 并且没有将其作为类的属性持有,因此一旦显示日历,助手就被删除并且不再作为委托(delegate)可用。

private var calendarHelper:CalendarHelper?

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

func showCalendar() {
    calendarHelper.showCalendar()
}

代替

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

关于ios - EKEventEditViewController 不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53590502/

相关文章:

ios - 在 Quartz 2D iOS 中剪辑路径绘图

ios - 谷歌分析选择退出 "how to"

android - 如何解决webview抖动会覆盖已弃用的API?

ios - 从网站获取图像列表并显示它

ios - presentScene() 不是 SKScene 的成员

ios - Alamofire "installation"不工作(嵌入式二进制文件中的红色文本)

ios - 使用SWIFT在iOS SDK for Facebook上使用FBSDKGraphRequest

iphone - 如何使用Event Kit框架在iPhone中添加事件

ios - 搜索没有日期的 ios 提醒

ios - 如何从 EKEventStore 检索 3 年前的事件