2012-02-25 139 views
4

现在我想在我的iOS应用程序的地图上添加一个静态引脚注释。在哪种情况下将调用mapView:viewForAnnotation:?

但我只是想知道委托方法mapView:viewForAnnotation:将被调用。

在苹果的文档,它是说,

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

我已阅读来自苹果互联网和官方文件几个教程。 而我仍然不会在调用这个方法的时候。

+0

您是否试图添加自定义注释引脚? – 2012-02-25 09:51:32

回答

10

每当您致电addAnnotation方法- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation被调用。看看截图。

enter image description here

你可以找到这个对MKMapView Class Reference

附:在addAnnotation呼叫和- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation放置断点,你会很容易看到函数调用的流程。

+7

未完成答案,因为viewForAnnotation也可能在Map可视区域显着变化时调用。 e,g:用户放大纽约市场,然后放大,然后放大伦敦。 – AmitP 2013-04-07 20:40:00

+0

非常有帮助! WA寻找这一个小时! – coolcool1994 2014-03-14 00:20:50

+0

“无论何时调用addAnnotation方法...”:否。文档截图不会说明这一点,这不是实际发生的情况。当OP引用问题中的文档时,viewForAnnotation由地图视图“当它需要注释视图”调用。如果地图视图当前正在显示要添加注释的区域,则可立即或稍后调用viewForAnnotation _may_,但不能保证。正如@AmitP也提到的那样,viewForAnnotation也可以多次调用_after_注释已经添加了,如果区域发生变化。 – Anna 2015-04-15 13:26:13

2

显然MKMapView至少会调用mapView:viewForAnnotation:当它将需要显示您的MKAnnotationView到屏幕上。

相关问题