2016-03-22 11 views
1

Ich habe eine mapView mit Anmerkungen, die mit Daten aus CloudKit erstellt werden. Ich benutze die Info-Taste aus der Annotation, um das Segment aufzurufen, wenn die Schaltfläche angetippt wird.Daten übergeben, um von Annotation zu trennen?

Ich weiß, dass ich Titel und Untertitel leicht wie dies passieren kann ..

func mapView(mapView: MKMapView, annotationView: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { 

    let detailTitle = annotationView.annotation.title 

    performSegueWithIdentifier("fromMap", sender: self) 

} 

Mein Problem ist, dass ich mehr senden muß als nur die Daten, die in der MKAnnotation Ansicht ist. Ich habe ein paar andere Felder aus den CloudKit-Aufzeichnungen, die ich durch den Übergang zum Detail-Controller weitergeben muss, aber ich kann nicht für das Leben von mir herausfinden, wie das geht.

Es ist einfach mit einem TableView zu tun, weil Sie die IndexPath-Info haben, aber Sie haben das nicht von einer Anmerkung, soweit ich das beurteilen kann.

Ich habe alle Beiträge und Informationen durchgesehen, die ich online finden konnte, aber ich bin immer noch fest.

Jede Hilfe wäre willkommen.

Antwort

3

können Sie tuple verwenden nur mehr als ein Objekt zu senden und sie von den Ziel-View-Controller fangen

func mapView(mapView: MKMapView, annotationView: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { 
    let detailTitle = annotationView.annotation.title 
    performSegueWithIdentifier("fromMap", sender: (annotation.title, annotation.subtitle, annotation.address)) 
} 
+0

Scheinen, wie es könnte, arbeiten wird es versuchen. Wie würde ich Daten senden, die nicht Teil der Annotation sind, aber Teil desselben Datensatzes in CloudKit sind? Zum Beispiel enthält der CK-Datensatz Daten wie Rating-Informationen, die ich senden möchte, wurde aber nie in der Annotation verwendet, weil er dort nicht benötigt wurde. – ALTVisual

+1

Ich denke, dass dieser Blog nur die Informationen enthält, die Sie benötigen. http://nshipster.com/cloudkit/ –

+1

lassen greatID = CKRecordID (record: "Greatplace") publicDB.fetchRecordWithID (greatID) {fetchedPlace, Fehler in // Fehler behandeln hier } –