Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我们可以从MKMapView获取所有注释视图吗_Iphone_Objective C - Fatal编程技术网

Iphone 我们可以从MKMapView获取所有注释视图吗

Iphone 我们可以从MKMapView获取所有注释视图吗,iphone,objective-c,Iphone,Objective C,关于如何从MKMapView获取所有注释,是否有任何直接方法或建议?您可以使用地图的注释属性访问地图的注释。获取所有注释的视图可能并不总是可行的,因为当前在地图上不可见的注释可能没有与其关联的视图,但对于任意注释,您可以尝试使用-viewForAnnotation:方法获取视图 因此,这里介绍了如何遍历所有地图的注释并尝试访问它们的视图: for (id<MKAnnotation> annotation in mapView.annotations){ MKAnnotatio

关于如何从
MKMapView
获取所有注释,是否有任何直接方法或建议?

您可以使用地图的
注释属性访问地图的注释。获取所有注释的视图可能并不总是可行的,因为当前在地图上不可见的注释可能没有与其关联的视图,但对于任意注释,您可以尝试使用
-viewForAnnotation:
方法获取视图

因此,这里介绍了如何遍历所有地图的注释并尝试访问它们的视图:

for (id<MKAnnotation> annotation in mapView.annotations){
    MKAnnotationView* anView = [mapView viewForAnnotation: annotation];
    if (anView){
       // Process annotation view
       ...
    }
}
for(mapView.annotations中的id注释){
MKAnnotationView*anView=[mapView视图用于注释:注释];
如果(anView){
//进程注释视图
...
}
}
在swift 3中

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {

    let selectedAnnotation = view.annotation

        for annotation in mapView.annotations {
            let viewI = mapView.view(for: annotation)

            if !(viewI?.annotation is MKUserLocation){
                if annotation.isEqual(selectedAnnotation) {
                    viewI?.image = UIImage(named: "focus.png")
                    showLifeEventView(anotation: view) //did select a point on Map.
                }else{
                    viewI?.image = UIImage(named: "point.png")
                }
            }
        }
}

这将创建一组新的MKAnnotationViews,而不是返回地图上现有的MKAnnotationViews。^否,它不会创建新的注释。最初的解决方案是正确的。Aneil,我怀疑你把
MKMapView
方法
viewForAnnotation
(在Vladimir的例子中正确工作)和
MKMapViewDelegate
方法
mapView:viewForAnnotation:
(它创建注释,但你从来没有直接调用过)。这真是太糟糕了。这节省了我的时间。