2010-11-03 9 views
3

Je souhaite que la légende des annotations apparaisse lorsque la broche a terminé son animation. Actuellement, je suis en mesure de simuler avec la méthode suivante:Mapkit, comment détecter les annotations ont été chargées

- (void)showCallOut { 
    [myMapView selectAnnotation:[myMapView.annotations objectAtIndex:0] animated:YES]; 
} 

Dans mon viewDidLoad est où mon annotation est créée

[myMapView addAnnotation:annotation]; 

Le problème est que vous ne pouvez pas CallOut [self showCallOut]; après parce qu'à il s'exécute avant que MapKit ait "reconnu" la chute d'annotation. J'ai besoin soit de créer un délai (Je voudrais éviter cela) ou trouver la bonne façon de détecter quand les annotations sont en place, puis exécutez la méthode showCallOut.

Merci pour toute aide!

Merci à aBitObvious ci-dessous pour fournir une solution:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:1]; 
} 

Répondre

5

Essayez d'utiliser la méthode déléguée didAddAnnotationViews:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    [self showCallOut]; 
} 

Assurez-vous est fixé le délégué de votre point de vue sur la carte.

Edit:
Si vous avez besoin d'ajouter un retard peu importe, essayez ce lieu (exemple avec 1/2 secondes de retard):

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:0.5]; 
} 
+0

Cela fonctionne très bien! Un moyen rapide d'ajouter un délai à cela? Actuellement avec ce que le CallOut montre comme la broche tombe. –

+0

Je vais l'ajouter à la réponse. – Anna

+0

Génial, j'ai réussi à l'obtenir mais peut-être que votre méthode sera améliorée par rapport à la mienne. Je suis en train d'apprendre cette langue (3ème jour sur le projet/en utilisant xcode/objectif-c). Je vais éditer ma question avec ma méthode. –

Questions connexes