2017-02-14 1 views
2

Ce code est utilisé pour initialiser la vue pour une annotation, mais la vue des accessoires de droite n'est pas visible dans les cartes.Impossible d'afficher la vue des accessoires de gauche pour une annotation dans 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 
} 

Je ne sais pas quel est le problème.

+0

Vous utilisez un 'rightCalloutAccessoryView' et en demandant à gauche –

+0

Merci de remarquer. @SachinVas –

+0

@RohitDulam 'CalloutAccessoryView' est affiché lorsque vous appuyez/sélectionnez l'annotation avant cela. –

Répondre

0

Utilisez cette

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

Merci, mais la solution ne fonctionne pas @Lalit kumar –

+0

votre broche en faisant ou non –

+0

Oui, la broche est affichée sur la carte. –

0

s'il vous plaît utiliser et vérifier

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

Merci, mais la solution ne semble pas fonctionner. @ Sun Prajapathi –

+0

vous voulez montrer votre détaildisclosure bouton dans le côté gauche ou à droite? –

+0

Sur le côté droit. –