0

我有一个 MapViewController 类,我设置了

mapView.delegate = self

在 viewDidLoad 中。当我第一次加载地图时,注释会正确呈现。但是,在刷新后(例如,在我点击标注中的按钮后 - 说“删除”),所有其他引脚都会丢失它们的图像并呈现为“红色”。

在我的刷新方法中,我删除了所有注释:

mapView.removeAnnotations(mapView.annotations)

然后以与我在初始加载时创建注释相同的方式重新创建注释。

直到今天,当我升级到 Swift 2.0 时,这段代码都可以正常工作。直到现在我只是幸运还是我错过了一段新代码?

我什至尝试强制引脚默认为绿色。但无论我做什么(设置图像或更改颜色),刷新后,所有引脚都是红色的 :(

4

1 回答 1

0

在以下位置发现错误:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

在一天中的某个时候,我以某种方式改变了以下情况:

mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) 

没有返回 nil 并将 Annotation 设置为 MKPinAnnotationView。刷新后,我将同一个对象出队。一旦渲染它默认为红色。

解决方案是仅处理“MKAnnotationView”对象(无论是我自己的子类还是默认)。

于 2015-09-21T22:20:32.437 回答