2017-02-14 16 views
2

Этот код используется для инициализации представления аннотации, но правый вид аксессуаров не отображается на картах.Невозможно отобразить левый вид аксессуара для аннотации в 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 
} 

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

+0

Вы используете 'rightCalloutAccessoryView' и просить левой –

+0

спасибо за указание. @SachinVas –

+0

@RohitDulam 'CalloutAccessoryView 'показывается, когда вы нажимаете/выбираете аннотацию до этого. –

ответ

0

Используйте этот

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 
    } 
+0

Спасибо, но решение не работает @Lalit kumar –

+0

Ваш вывод в создании или нет –

+0

Да, вывод отображается на карте. –

0

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

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 
+0

Спасибо, но решение, похоже, не работает. @Sunil Prajapathi –

+0

Вы хотите показать свою кнопку раскрытия детали в левой или правой части? –

+0

С правой стороны. –