2012-02-25 21 views
4

これで、iOSアプリケーションの静的ピン注釈をマップに追加します。その場合、そのmapView:viewForAnnotation:が呼び出されますか?

しかし、私は、デリゲートメソッドmapView:viewForAnnotation:が呼び出されるかどうかを知りたいだけです。アップルのドキュメントで

、私がインターネットやAppleからの公式ドキュメントからいくつかのチュートリアルを読んだ

When it needs an annotation view, the map view calls the mapView:viewForAnnotation: method of its delegate object. 

と言われています。 そして、私はまだこのメソッドが呼び出されるときにしません。

+0

カスタム注釈ピンを追加しようとしていますか? –

答えて

10

addAnnotationメソッドを呼び出すたびに- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotationが呼び出されます。スクリーンショットを見てください。

enter image description here

あなたはMKMapView Class Reference

P.S.でこれを見つけることができますブレークポイントをaddAnnotationコールと- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotationに置くと、簡単に関数呼び出しのフローが表示されます。

+7

viewForAnnotationはMap Viewable Regionが大幅に変更されたときに呼び出すこともできるため、完全な答えではありません。 e、g:ユーザーはNYCをズームインし、ズームアウトしてからロンドンをズームインします。 – AmitP

+0

非常に参考になりました!これを1時間探しています! – coolcool1994

+0

「addAnnotationメソッドを呼び出すたびに...」:いいえ.Docのスクリーンショットではそのことは言わず、実際には起こりません。オペレーションが質問の中の文書を引用すると、viewForAnnotationはマップビュー "注釈ビューが必要なとき"によって呼び出されます。マップビューに現在注釈を追加する領域が表示されている場合は、すぐにviewForAnnotation _may_が呼び出されますが、保証はありません。 @AmitPも述べたように、viewForAnnotationは、リージョンが変更された場合に_after_ annotationがすでに追加されている複数回呼び出すこともできます。 – Anna

2

明らかにMKMapViewはを画面に表示する必要がある場合は少なくともmapView:viewForAnnotation:となります。

関連する問題