2010-06-01 5 views
4

quelqu'un peut me aider sur la façon d'utiliser la méthodebroches annotations iphone et boutons

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 

. J'essaie de dire les broches d'annotation sur mon projet et je ne peux pas comprendre comment. Chaque broche a un bouton de divulgation, mais je n'arrive pas à comprendre comment le programme va savoir quel bouton-poussoir est poussé.

Répondre

2

Vous pouvez utiliser un tas de techniques différentes ici.

Par exemple, vous pouvez garder un Ivar pour chaque annotationView et faire:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    if (view == myFirstAnnotationView) { 
    //do something 
    } 
    if (view == mySecondAnnotationView) { 
    //do something 
    } 
    if (view == myThirdAnnotationView) { 
    //do something 
    } 
} 

Ou, vous pouvez utiliser la valeur de la variable de la vue d'annotation. Ou, vous pouvez sous-classer MKAnnotationView pour ajouter un comportement à celui-ci.

- (void)mapView:(MKMapView *)mapView annotationView:(MyMKAnnotationViewSubclass *)view calloutAccessoryControlTapped:(UIControl *)control { 
[view doAMethodIMadeWhenISubclassed]; 
} 

Aucun de ces médicaments est une solution complète et il serait difficile de fournir un sans Beter comprendre votre application et la conception, mais ce qu'ils ont tous en commun est en train de changer la annotationView avant de l'ajouter à la carte afin de décider quoi faire après le rappel du délégué se produit. J'espère que cela vous mène sur le bon chemin.

+0

J'ai trouvé comment aller à la vue détaillée que j'ai créée mais je me demandais si vous pouviez me dire comment séparer les broches sans aucune instruction if. Comment puis-je savoir quel bouton est poussé ??? – alecnash

+0

Merci, pour vous dire la vérité, j'ai trouvé qu'il était un peu plus facile d'utiliser un IBAction pour les boutons. – alecnash