如何从iOS Swift

时间:2017-02-22 16:31:22

标签: ios swift icalendar

我们有一个iPhone应用程序,可让人们配置事件。人们可以选择活动的日期,但不能选择小时。为此,我们已将其连接到iCalendar。目前,当我们进入活动页面时...我们只需按下iCalendar图标,iCalendar就会自动在日历的同一天打开...我们必须选择小时+输入活动的名称。所以我们复制(放两次)事件的名称......一个在我们的应用程序中,另一个在Icalendar中。

我可以以这样的方式进行iCalendar的调整,以便当按下Icalendar按钮时...它会在给定日期打开我的日历..然后当我选择小时时......事件的名称还放了?

配置此项的最佳方法是什么,这样我们就不必将事件信息放两次。谢谢你让我知道。

1 个答案:

答案 0 :(得分:0)

首先需要导入EventKitUI,如:

导入EventKitUI

并添加委托:EKEventEditViewDelegate

并添加以下代码以打开新的事件屏幕,传递数据为:

let eventStore = EKEventStore()
    eventStore.requestAccess(to: .event, completion: {(_ granted: Bool, _ error: Error?) -> Void in
        if granted {
            let event = EKEvent(eventStore: eventStore)
            event.title = "My Event Test 1"
            //event.location  = location;
            event.startDate = Date()
            event.endDate = event.startDate.addingTimeInterval(60 * 30)
            //event.notes     = notes;
            let controller = EKEventEditViewController()
            controller.eventStore = eventStore
            controller.event = event
            controller.editViewDelegate = self
            self.present(controller, animated: true, completion: { _ in })
        }
    })

根据用户操作处理响应:

func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) {
switch (action) {
case .canceled:
    // User tapped "cancel"
    break;
case .saved:
    // User tapped "save"
    break;
case .deleted:
    // User tapped "delete"
    break;
}
self.dismiss(animated: true, completion: nil)
}