In which case that mapView:viewForAnnotation: will

2019-01-25 21:21发布

问题:

Now I want to add a static pin annotation on map in my iOS app.

But I just want to know if the delegate method mapView:viewForAnnotation: will be called.

In the Apple documentation, it is said that

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

I have read several tutorials from Internet and official documentation from Apple. And I still don't when this method will be called.

回答1:

Whenever you call addAnnotation method - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation gets called. Have look at the screenshot.

You can find this on MKMapView Class Reference

P.S. Put breakpoints at addAnnotation call and - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation you will see the flow of function call easily.



回答2:

Obviously MKMapView at least will call mapView:viewForAnnotation: when it will need to display your MKAnnotationView to the screen.