Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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
Ios 如何防止自定义mkAnnotationView恢复为使用默认颜色和图示符图像?_Ios_Mapkit_Mkmapview_Mkannotation_Mkannotationview - Fatal编程技术网

Ios 如何防止自定义mkAnnotationView恢复为使用默认颜色和图示符图像?

Ios 如何防止自定义mkAnnotationView恢复为使用默认颜色和图示符图像?,ios,mapkit,mkmapview,mkannotation,mkannotationview,Ios,Mapkit,Mkmapview,Mkannotation,Mkannotationview,我在UITabBarController的单独选项卡上有几个MKMapViews。每个地图都使用自定义的mkAnnotationView进行MKAnnotations和MKClusterAnnotations。自定义mkAnnotationView为带星形图示符的绿色,如果是群集,则为带数字的绿色 问题是,我的自定义mkAnnotationView正在随机恢复为带有pin标志符号的默认红色外观。当我放大时,视图将开始重新绘制并正确显示。我无法始终如一地重现这个问题,但当我离开一个选项卡然后返回时

我在UITabBarController的单独选项卡上有几个MKMapViews。每个地图都使用自定义的mkAnnotationView进行MKAnnotations和MKClusterAnnotations。自定义mkAnnotationView为带星形图示符的绿色,如果是群集,则为带数字的绿色

问题是,我的自定义mkAnnotationView正在随机恢复为带有pin标志符号的默认红色外观。当我放大时,视图将开始重新绘制并正确显示。我无法始终如一地重现这个问题,但当我离开一个选项卡然后返回时,它似乎会发生

是否有类似于集合视图上的reloadData()的方法强制在地图视图上重新加载?我的viewForAnnotation func不应该返回零,所以我不知道这是怎么发生的

 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
     var view = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotationView") as? CustomAnnotationView
     if view == nil {
         view = CustomAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
     } else {
         view?.annotation = annotation
     }
     return view

     // code for the cluster annotations redacted
 }

问题解决了。一、 显然,需要在集群子类的prepareforuse函数中设置标记的样式

override func prepareForReuse() {
    super.prepareForReuse()

    style()
}

如果批注为MKUserLocation{return nil}则将
添加到
viewFor annotation
方法。@KosukeOgawa感谢您的回复!但是,即使包含该行,问题仍然存在。