私のコードでは、アップルマップを使用しており、View Controller内でマップビューとデリゲートを正しく設定しています。MKAnnotationViewをカスタマイズできないのはなぜですか?
は私のViewControllerの中で私はまた、forループ内で次のコードを持っている:
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のような紫、赤ではありません描かれていたときに、彼らがする必要があります示唆しています。何が問題ですか?!ユニークな字幕と一致しない再利用とは何か?それは各MKPointAnnotationに割り当てることですか?
UPDATE:delegate関数viewForAnnotationが呼び出されていないことが分かりました。これは、ピンが紫色でない理由を説明します。 viewForAnnotationがなぜ呼び出されないのですか?
私はこの変更を試みたが、それはまだ動作していません。私は実際にviewForAnnotationが呼び出されていないという印刷ステートメントに基づいて考え出しました。したがって問題です。それがなぜ呼び出されないのか? –
これを有効にする必要があるかもしれません(例えば、 'mapView.view(for:annotation)?. isEnabled = enabled')... –