2016-03-30 20 views
1

Ich arbeite an einer Karte, die einige Marker haben und ich möchte eine Info-Ansicht erstellen, die ein Bild und etwas Text für jeden Marker zeigt.So übergeben Sie Daten an eine andere Ansicht

map

Also, wenn ich die Info-Taste drücken, geht es zu einem Info-Fenster.

map2

Ich habe dieses auf dem Code:

func mapView(mapView: MKMapView, annotationView: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { 
    if control == annotationView.rightCalloutAccessoryView { 

     performSegueWithIdentifier("showInfo", sender: data) 

    } 
} 

Aber ich möchte, um die Daten zu übergeben von „Stellen“, so konnte ich für die jeweils ein Bild zeigen.

Ich muss dies in Swift tun.

Vielen Dank.

+0

Mögliche Duplikat [Geben von Daten zwischen View-Controller] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) – Ujjwal

Antwort

4

Sie sollten diese Methode zu Ihrer Klasse hinzufügen, wenn Sie keine Daten haben, und diese dann an die Daten der Zielansicht übergeben.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showInfo" { 
     let destination = segue.destinationViewController as! YourViewController 
     //this will execute before next ViewController's viewDidLoad method 
     destination.data = sender 
    } 
} 
0

Sie haben prepareForSegue Funktion in Ihrem viewController außer Kraft zu setzen:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if "showInfo" == segue.identifier { 
      // Then pass your data 
      let destController = segue.mapViewController as! YourViewController 
      destController.yourData = sender 
     } 
    } 
0

Schließen Sie die Info-Taste Ausgang zu Ihrem viewcontroller. Dann erstellen Sie func wie folgt:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if "YourSegue" == segue.identifier { 
     // Then pass your data 
    } 
}