74 votes

Comment faire pour déclencher MKAnnotationView ' s légende vue sans toucher le code pin ?

Je travaille sur un `` avec la broche couleur habituelle comme les points d’emplacement. Je voudrais pouvoir avoir la légende affichée sans toucher à la broche.

Comment dois-je faire ? Appeler `` sur l’annotationview n’a rien fait. Je pense à simuler une touche sur la broche, mais je ne sais pas comment s’y prendre à ce sujet.

62voto

Steve Shi Points 539

Mais il y a un hic pour obtenir benvolioT de la solution de travail, le code

for (id<MKAnnotation> currentAnnotation in mapView.annotations) {       
    if ([currentAnnotation isEqual:annotationToSelect]) {
        [mapView selectAnnotation:currentAnnotation animated:FALSE];
    }
}

devrait être appelé à partir d' - (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView, et nulle part ailleurs.

La séquence dans laquelle les diverses méthodes comme viewWillAppear, viewDidAppear de UIViewController et de la - (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView est appelé est différente entre la première fois que la carte est chargé avec un endroit particulier, et les fois suivantes, la carte est affichée avec le même emplacement. C'est un peu délicat.

34voto

Seymour Cakes Points 3211

Ok, voici la solution à ce problème.

Pour afficher l’utilisation de la légende de méthode.

32voto

user507778 Points 221

En supposant que vous voulez le dernier view de l’annotation à sélectionner, vous pouvez placer le code ci-dessous :

dans le délégué ci-dessous :

21voto

Vespassassina Points 396

Ok, d’ajouter avec succès la légende vous devez appeler annotation : animation après toutes les vues d’annotations ont été ajoutées, à l’aide de la didAddAnnotationViews du délégué :

12voto

charliehorse55 Points 790

Après avoir essayé une variété de réponses à ce sujet, j’ai enfin venu à ceci. Il fonctionne de manière très fiable, j’ai encore de le voir échouer :

Le bloc est utilisé pour retarder un peu, car sans elle la légende peut ne pas être montrée correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X