2016-11-08 10 views
0

アプリケーションでピンが選択されると、情報ボタンを下のビューコントローラにリンクする必要があります。マップキットの情報ボタンを使用して2番目のView Controllerにプッシュ

2nd View Controller

ボタンが最初から画面に表示された場合、私はこれを行う方法を知っているだろうが、ピンが選択されるまで、それは存在しません。どうやってこれを実装できますか?私のボタンは現在、単に以下のようにコーディングされています

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) { 
    if control == view.rightCalloutAccessoryView { 
     print("Button tapped ") 
    } 
} 

を、これはセグエの場合も、私はこの1つのビューコントローラを持っており、テキストや写真は、インフォピンボタンがクリックされたかに応じて変更持つことができるでしょうか?あなたの助けのための

おかげで、あなたの注釈があなたのマップビューは、このメソッドは、選択したマップビューによって呼び出されるデリゲートメソッド

optional func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) 

て注釈を選択することに応答しますタイトルを持っている場合

答えて

0

あなたの注釈。このメソッドは、マップビューのデリゲートとして指定したビューコントローラで実装し、segueの実行など、何をすべきかをマップビューの委譲者に伝えることができます。で、

ので
self.myMapView.delegate = self 

:あなたのマップビューのデリゲートをすることによって、このビューコントローラであることを宣言します)(どこかのviewDidLoadで

class myMapViewController: UIViewController, MKMapViewDelegate { 
// Your class code starts here 

} 

その後:これはのように、あなたはあなたののViewControllerを開始したことを意味しますデリゲートを実行する前に準備をプログラムすることができます。その後、segueを準備する際に、選択されている注釈に対するアクションのデスティネーションビューコントローラを準備します。

デリゲートメソッドでは、選択したアノテーションビューが表示されます。このデリゲートメソッドで

let theAnnotation = view.annotation 

:この注釈ビューで行く注釈が得られます。

これが役に立ちます。

+0

お返事ありがとうございますが、少し混乱しています。デリゲートメソッドがView Controllerに配置され、ボタンの動作を決定する関数と一緒に配置されますか?私はちょうど私が変わることになっているものについて混乱している。申し訳ありませんが、これは悪化していますが、私は非常に迅速かつ完全に理解していない新しいです。あなたがもう助けることができれば、それはすばらしいことでしょう。 –

関連する問題