我使用MKMapView
开发了一个小应用程序,其中MKAnnotations
在地图上不断添加。只要用户不触摸地图视图,它就能正常工作。
如果用户尝试与地图互动,我注意到地图中没有添加新的MKAnnotationViews
。实际上,我发现只要用户不断与地图进行交互,就不会调用mapView: didAddAnnotationViews:
。一旦用户的手指离开屏幕,就会调用mapView: didAddAnnotationViews:
,将所有应该添加的MKAnnotationViews
传递给参数。
我尝试强制调用mapView: didAddAnnotationViews
,但我需要传递MKAnnotationViews
作为参数(所以我不能使用任何基于定期调用的东西),当我尝试调用它时mapView: viewForAnnotation:
的结尾,因为视图尚未添加到mapView,所以它不起作用。尝试通过另一个线程添加注释也是一个坏主意,因为这会导致Collection was mutated while being enumerated
异常(可能来自存储注释视图的可变数组)。
有没有办法解决这个问题?
答案 0 :(得分:0)
您可以创建实现委托的自定义类。
您可以使用MKAnnotationView的initWithAnnotation:
方法创建注释并将其添加到数组中。
然后,您可以使用addAnnotations:
方法将所有内容添加到地图中以添加注释。
只要您使用自定义注释,您需要手动创建它们,因此用户不能。