2012-03-21 8 views
0

MKPinAnnotationViewについて質問があります。まず最初に、ピンの座標を入力し、その後viewForAnnotationを呼び出してそれらを作成し、右ボタンを追加しました。MKPinAnnotationView - 異なるピンの異なる動作

しかし私の質問は、どのようにこれらのピンに対して異なるアクションを選択できますか?

私がNSLogのボタンタグを探すときは、すべてのピンに0を表示するので、タグではできません。タグを使用

for (int i=0;i<=[[mapview annotations]count];i++) { 
    pinView.tag = i ; 
    rightButton.tag=i; 
} 

答えて

0

あなたがする必要はありません(とすべきではない):それは何かを意味している場合ここで

は、ボタンのコードです。

代わりに、アクションメソッドでは、どのアノテーションが選択されたかを判断し、それに基づいて異なるロジックを実行できます。

独自のアクションメソッドを作成する必要はありません。コールアウトボタンをタップすると、マップビューはcalloutAccessoryControlTappedデリゲートメソッドを呼び出して、アノテーション(つまり、view.annotation)を参照します。デリゲートメソッドを使用する場合は、addTargetviewForAnnotationから削除し、デリゲートメソッドを実装するだけです。

何らかの理由で独自のアクションメソッドを使用する場合は、マップビューのselectedAnnotationsプロパティを確認して、選択した注釈を判断できます。選択された注釈はインデックス0になります(最初にアレイのcountがゼロでないことを確認してください)。すべての上記のサンプルコードについては


、この質問を参照してください。
How to keep data associated with MKAnnotation from being lost after a callout pops up and user taps disclosure button?

関連する問題