Я пытаюсь передать координаты, заголовок и субтитры выбранной MKAnnotation из ViewController1 (VC1) в ViewController2 (VC2), когда нажата кнопка DetailDisclosure rightCalloutAccessoryView. У меня есть segue от VC1 до VC2 с идентификатором viaSegue. У меня есть метка с идентификатором viaSegueLabel в VC2, где я хочу отображать координаты как String.Передача координат выбранной аннотации в новый контроллер просмотра Swift 2.0
Функция, которая адаптирует призыв MKAnnotation в таким образом, чтобы он отображает кнопку DetailDisclosure в rightCalloutAccessoryView выглядит следующим образом:
// Customize Annotation Callout
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
// 1
let identifier = "Capital"
// 2
if annotation.isKindOfClass(Capital.self) {
// 3
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil {
//4
annotationView = MKPinAnnotationView(annotation:annotation, reuseIdentifier:identifier)
annotationView!.canShowCallout = true
// 5
let btn = UIButton(type: .DetailDisclosure)
annotationView!.rightCalloutAccessoryView = btn
} else {
// 6
annotationView!.annotation = annotation
}
return annotationView
}
// 7
return nil
}
Функция, которая принимает пользователя от VC1 к VC2, когда кнопка DetailDisclosure сливают выглядит как :
// When righCalloutAccessoryView is tapped, segue to newView
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
self.performSegueWithIdentifier("newView", sender: view)
}
И функция Я думаю, что нужно реализовать для достижения этой цели выглядит следующим образом:
// Pass data to newView
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "newView") {
let destViewController:BusStopSettingsViewController = segue.destinationViewController as! BusStopSettingsViewController
destViewController.viaSegue = // not sure how to reference selected Annotation here
}
}
В последней строке prepareForSegue() мне нужно указать MKnnotation, которая в данный момент выбрана. Есть ли метод, встроенный в Swift, который позволяет мне это делать, или я должен сделать Annotation глобальным?