2017-03-06 4 views
2

私はクラスの配列を持っています。 mkmapviewにいくつかの注釈ピンを追加します。マップのデリゲートでアノテーションピンタップイベントを取得するMapKit Swift

var events = [Events]() 

    for event in events { 
     let eventpins = MKPointAnnotation() 
     eventpins.title = event.eventName 
     eventpins.coordinate = CLLocationCoordinate2D(latitude: event.eventLat, longitude: event.eventLon) 
     mapView.addAnnotation(eventpins) 
    } 

私がタップされている配列eventsの行

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) { 
    print(view.annotation?.title! ?? "") 
} 

は、どのように私が得ることができる機能実装しましたか? 私は別のViewControllerでsegueしたいので、私はこのClassオブジェクトを送信したいと思います。

答えて

3

あなたが好き、カスタム注釈クラスを作成する必要があります:あなたは、今

for event in events { 
    let eventpins = EventAnnotation() 
    eventpins.myEvent = event // Here we link the event with the annotation 
    eventpins.title = event.eventName 
    eventpins.coordinate = CLLocationCoordinate2D(latitude: event.eventLat, longitude: event.eventLon) 
    mapView.addAnnotation(eventpins) 
} 

:あなたの注釈を追加する場合、カスタムアノテーションでEventをリンクするだろう、そして、

class EventAnnotation : MKPointAnnotation { 
    var myEvent:Event? 
} 

デリゲート機能でイベントにアクセスできます:

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) { 
    // first ensure that it really is an EventAnnotation: 
    if let eventAnnotation = view.annotation as? EventAnnotation { 
     let theEvent = eventAnnotation.myEvent 
     // now do somthing with your event 
    } 
} 
+0

私が探していたものです! –

関連する問題