2009-09-02 8 views
1

J'ai une vue d'annotation de carte qui contient un bouton de mise à l'état libre qui charge une vue accessoire qui est une classe UIViewController. J'utilise des annotations resuable, mais je me demande comment je peux transmettre des informations mises à jour à ma classe UIViewController. Disons que j'ai 2 valeurs de chaîne qui correspondent à 2 UILabels sur ma vue. Comment puis-je mettre à jour ces valeurs après que la vue d'accessoire initiale a déjà été chargée en mémoire en tant que vue réutilisable?Chargement de la vue des légendes accessoires pour mkannotationview

Toute aide serait appréciée.

Répondre

0

Vous devez conserver une référence aux UILabels dans l'objet qui obtient la mise à jour, puis utiliser setTitle: (je pense) pour mettre à jour les étiquettes.

0

Dans votre sous-classe d'annotation, vous devez remplacer la méthode setTitle pour envoyer les modifications à l'instance de votre classe UIViewController que votre sous-classe contient. Ou, vous pouvez configurer votre sous-classe d'annotation pour recevoir des notifications (de NSNotificationCenter), et après avoir reçu une notification, mettez à jour le titre et l'instance de votre classe UIViewController.

Si vous n'êtes pas familier avec NSNotifications, alors voici une petite référence. J'ai utilisé ceux-ci pour garder mes annotations à jour. NSNotification Example

0

Essayez d'utiliser la méthode MKMapViewDelegate:

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

Cette méthode est appelée lorsqu'un utilisateur tapé l'un des boutons accessoires de la vue d'annotation. En supposant que votre MKMapViewDelegate est également le UIViewController qui peut accéder à votre vue accessoire.

Questions connexes