2011-07-06 2 views
2
callout

J'utilise MKMapKit pour afficher des résultats de recherche sur une carte. J'utilisequi MKAnnotation Detecting a été touché

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

pour vérifier si une légende a été pressé, mais la seule information que je suis en mesure d'obtenir est le view.annotation.title. Cela ne me sert à rien car je pourrais avoir beaucoup de résultats avec le même titre.

J'ai ajouté une propriété business_id à la classe, mais je ne semble pas être en mesure de le lire dans cette méthode. Je devine que cette méthode est seulement pour les éléments qui font partie de la vue?

Quelle est la meilleure façon d'identifier de manière unique qui a été touché callout?

Merci.

Répondre

7

Depuis l'annotation est l'un de vos vous faire pouvez faire avec lui ce que vous voulez.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    MyGroovyAnnotation *annotation = (MyGroovyAnnotation *)view.annotation; 
    id businessId = annotation.businessId; 
    // do something remarkable 
} 

Cela va exploser si vous copiez et collez comme la méthode est appelée pour une vue d'annotation qui est touchée de sorte que vous devriez vérifier si la vue d'annotation est celle avec l'annotation personnalisée avant d'envoyer des messages.

+0

Très bien. Exactement ce dont j'avais besoin. Merci –

Questions connexes