Search code examples
swiftannotationsmkmapviewmkannotationcloudkit

Passing data to segue from annotation?


I have a mapView with annotations that are created using data from CloudKit. I use the info button from the annotation to call the segue when the button is tapped.

I know that I can pass title and subtitle easily like this..

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

    let detailTitle = annotationView.annotation.title

    performSegueWithIdentifier("fromMap", sender: self)

}

My issue is that I need to send more than just the data that is inside the MKAnnotation view. I have a few other fields from the CloudKit records that I need to pass along through the segue to the detail controller, but I can't for the life of me figure out how to do that.

It's easy to do with a tableView because you have the indexPath info, but you don't have that from an annotation as far as I can tell.

I've looked through all the posts and info I could find online, but I'm still stuck.

Any help would be appreciated.


Solution

  • You can use tuple just to send more than one object and catch them from the target view controller

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