2017-05-29 76 views
0

在我的代碼中,我正在使用Apple地圖,並在View Controller中正確設置了mapView和delegate。爲什麼我無法自定義我的MKAnnotationView?

在我的ViewController我也有內部的下面的代碼循環:

if userOnMapAlready == false { 
    let annotation = MKPointAnnotation() 
    annotation.coordinate = CLLocationCoordinate2D(latitude: otherUserLocation.coordinate.latitude, longitude: otherUserLocation.coordinate.longitude) 
    annotation.subtitle = otherUserUUID 
    self.mapView.addAnnotation(annotation) 

} 

我也有我的視圖控制器下面的委託功能,並重新設置我的視圖控制器內mapview.delegate =自:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
     if annotation is MKUserLocation { 
      //return nil so map view draws "blue dot" for standard user location 
      return nil 
     } 

     let reuseId = "pin" 

     var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView 
     if pinView == nil { 
      pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 
      pinView!.canShowCallout = true 
      pinView!.animatesDrop = true 
      pinView!.pinColor = .purple 
     } 
     else { 
      pinView!.annotation = annotation 
     } 

     return pinView 

    } 

可悲的是,當銷得出他們都是紅色,紫色不一樣viewForAnnotation會建議他們應。問題是什麼?!這是否與重用ID不匹配分配給每個MKPointAnnotation的唯一字幕?

更新:剛剛意識到,委託函數viewForAnnotation永遠不會被調用 - 這將解釋爲什麼引腳不是紫色。爲什麼viewForAnnotation不會被調用?

回答

0

在斯威夫特的最新版本的屬性是:

pinView!.pinTintColor = .purple 

或...

pinView!.pinTintColor = MKPinAnnotationView.purplePinColor() 

https://developer.apple.com/reference/mapkit/mkpinannotationview

+0

我想這種變化,但它仍然沒有工作。實際上,我基於printForAnotation並沒有被調用 - 因此是問題。任何想法爲什麼它不被稱爲? –

+0

您可能需要啓用它(例如'mapView.view(用於:註釋)?。isEnabled = enabled')... –

相關問題