Невозможно отобразить левое вспомогательное представление для аннотации в swift

Этот код используется для инициализации представления для аннотации, но правильное вспомогательное представление не отображается на картах.

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    var view = mapView.dequeueReusableAnnotationView(withIdentifier: "Map")


    if view == nil {
        view = MKAnnotationView(annotation: annotation, reuseIdentifier: "Map")
        view?.canShowCallout = true
        let btn = UIButton(type: .detailDisclosure)
        view?.rightCalloutAccessoryView = btn

    }

    view?.annotation = annotation
    return view
}

Я не знаю, в чем проблема.

2 ответа

Использовать этот

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

  if annotation is MKUserLocation {
    return nil
 }

  let reuseId = "AddPin"
  let pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
  if pinView == nil 
  {
    pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
    pinView!.canShowCallout = true
    pinView!.animatesDrop = true
    pinView!.pinColor = .Red

    pinView!. leftCalloutAccessoryView = UIButton.buttonWithType(.DetailDisclosure) as UIButton
   } else {
    pinView!.annotation = annotation
  }
   return pinView
  }

Пожалуйста, используйте это и проверьте это

    let reuseAnno = "test"

    var anno = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseAnno)
    if anno == nil {

        anno = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseAnno)
        anno?.image = UIImage(named: "imagename.png")
        anno?.canShowCallout = true
    }

    let customButton = UIButton(type: .DetailDisclosure)
    customButton.addTarget(self, action: #selector(ViewController.yourFuncName), forControlEvents: .TouchUpInside)
    anno?.rightCalloutAccessoryView = customButton
    return anno
Другие вопросы по тегам