更改所有注释时出现致命错误' MKMapView中的图像

时间:2014-10-12 08:38:05

标签: swift mkmapview

我正在尝试更改MKMapView标记的所有图像。这是代码:

for annotation:MKAnnotation in self.annotations as [MKAnnotation] {
    println(annotation.title) // Returns the correct title
    var updatedImage: UIImage! = self.bikeStationsManager.getMarker(annotation.title!, isABikeStation: displayingBikes) // Method to get the new image
    println(updatedImage.size.height) // Returns a value > 0
    self.viewForAnnotation(annotation).image = updatedImage // Fatal error: unexpectedly found nil while unwrapping an Optional value
}

这是奇怪的事情:我有83个标记,当我使用这个代码时,它每次都会崩溃,但并不总是针对相同的注释,根据{{1},注释或返回的图像都不是问题}。所以我真的不知道我的代码有什么问题,有没有人有想法?

我还尝试仅更新第一个注释的图像,例如,它正在工作。

1 个答案:

答案 0 :(得分:1)

根据文档

viewForAnnotation返回一个可选项:

  

返回值

     

注释视图,如果视图尚未显示,则为nil   创建。如果注释不在,则此方法也可以返回nil   可见地图区域,因此没有关联   注释视图。

如果注释不在地图的可见区域内,它甚至会返回nil,因此迭代所有注释的循环并不是更改注释图像的正确方法。

你必须实施

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {}
MKMapViewDelegate协议的

并在那里创建注释视图。