2017-02-22 57 views
0

我们有一个iPhone应用程序,可以让人们配置事件。人们可以选择事件的日期,但不能选择小时。为此,我们已将它连接到iCalendar。目前,当我们在活动页面上时,我们只需按下iCalendar图标并自动iCalendar在日历的同一日期打开...我们必须选择小时+将事件的名称。所以我们重复(放两次)事件的名字......一个在我们的应用程序中,另一个在Icalendar中。如何从iOS中将参数传递给iCalendar Swift

我可以让iCalendar以这种方式进行组合,这样当一个人按下Icalendar按钮时......它会在给定的日期打开我的日历..然后当我选择小时时......名称事件也被放置?

什么是配置该让我们没有把事件信息两倍的最佳途径。谢谢fopr让我知道。

+1

EventKit会让从来没有离开你的应用程序建立在苹果的日历事件。 –

+0

@DavidShaw谢谢,但Eventkit不允许在添加事件后进行更改 –

回答

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