2017-02-22 3 views
0

Wir haben eine iPhone App, die Menschen Ereignisse konfigurieren können. Personen können das Datum des Ereignisses auswählen, aber nicht die Stunde. Um dies zu tun, haben wir es mit iCalendar verbunden. Derzeit, wenn wir auf der Event-Seite sind .. drücken wir einfach das iCalendar-Symbol und automatisch öffnet sich iCalendar am selben Datum des Kalenders ... und wir müssen die Stunde auswählen + den Namen des Events eintragen. Also duplizieren wir den Namen des Ereignisses zweimal ... eins in unserer App, das andere in Icalendar.Wie Pass Parameter zu iCalendar von iOS Swift

Kann ich den iCalendar so einstellen, dass wenn ich den Icalendar Knopf drücke ... Es öffnet sich ein Kalender am angegebenen Datum .. und dann wenn ich die Stunde wähle ... den Namen des Event wird auch platziert?

Was wäre der beste Weg, dies zu konfigurieren, so dass wir die Ereignisinformationen nicht zweimal eingeben müssen. Danke, dass du mir Bescheid gegeben hast.

+1

EventKit lässt das Ereignis in Apples Kalender erstellen, ohne Ihre App zu verlassen. –

+0

@DavidShaw Danke, aber Eventkit lässt sich nach dem Ereignis nicht ändern –

Antwort

0

Zunächst müssen importieren EventKitUI wie:

Import EventKitUI

Und fügen Sie delegieren: EKEventEditViewDelegate

Und fügen Sie folgenden Code ein neues Event-Fenster öffnen mit übergebenen Daten als:

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

Und Handle Antwort nach Benutzeraktion als:

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