我正在尝试更改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},注释或返回的图像都不是问题}。所以我真的不知道我的代码有什么问题,有没有人有想法?
我还尝试仅更新第一个注释的图像,例如,它正在工作。
答案 0 :(得分:1)
viewForAnnotation
返回一个可选项:
返回值
注释视图,如果视图尚未显示,则为nil 创建。如果注释不在,则此方法也可以返回nil 可见地图区域,因此没有关联 注释视图。
如果注释不在地图的可见区域内,它甚至会返回nil,因此迭代所有注释的循环并不是更改注释图像的正确方法。
你必须实施
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {}
MKMapViewDelegate
协议的并在那里创建注释视图。