MapKit et annotations

voix
0

Je suis très nouveau pour le développement XCode et iPhone donc s'il vous plaît garder avec moi si cette question est trop simple. Mais j'ai une carte et j'ai ajouté avec succès les images (non pins) à pour mes annotations. Et je peux changer l'image lorsque l'utilisateur sélectionne une des annotations.

J'ai créé une classe qui hérite de MKAnnotationView avec les méthodes suivantes: -

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

et je suis en utilisant

- (void)touchesBegan

à savoir quand une annotation a été sélectionné. Et en touchesBegan que je fais: -

UIImage *i = [UIImage imageNamed:@A.png];
self.image = i;

pour changer l'image. Mais ce que je suis vraiment perplexe sur comment puis-je modifier l'image à son image d'origine lorsque les utilisateurs sélectionne la prochaine annotation. J'ai essayé:-

NSArray *selectedAnnotations = map.selectedAnnotations;
for(id annotationView in selectedAnnotations) {
[map deselectAnnotation:[annotationView annotation] animated:NO];
}

mais il des erreurs

et j'ai essayé

for (MKAnnotationView *ann in map.selectedAnnotations){
if ([ann isMemberOfClass:[Place class]])
{
place = (Place *)ann;
NSLog(@second = %@@ %f@ %f, place.title, place.longitude, place.latitude);
if (currentPlaceID == place.placeID) {
//UIImage *i = [UIImage imageNamed:@A.png];

//ann.image = i;
}
else {
UIImage *i = [UIImage imageNamed:@pin.png];

ann.image = i;
}
}

}

le code ci-dessus fonctionne bien jusqu'à ce que je à ann.image = i; alors il des erreurs. Les erreurs que je reçois sont les suivantes: -

*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370'

Oui, je peux voir que mon objet lieu n'a pas une image si c'est pourquoi il ne va pas. Mais si je crée une propriété d'image sur mon objet place - comment cela va changer l'image des annotations qui ce que je suis en train de faire.

S'il vous plaît conseiller que Je vais tourner en rond sur celui-ci pendant 2 jours maintenant !!!!

Merci à l'avance Cheryl

Créé 29/10/2009 à 15:56
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Cheryl,

Je ne suis pas tout à fait ce que vous essayez de faire, mais voici quelques réflexions:

Voici ce que je ferais pour restaurer l'image d'origine:

Dans votre sous-classe de MKAnnotationView, ajoutez deux propriétés UIImage,

firstImage et secondImage, mis en place pour retenir.

Lorsque vous initialiser le point de vue d'annotation, mettre en place les deux images. (Au point où vous attribuez l'image à votre vue d'annotation, enregistrer également votre nouvelle propriété firstImage)

Ensuite, vous pouvez dire

self.image = firstImage;

ou

self.image = secondImage.

Cela va troquer l'image appropriée en place, tout en gardant l'autre image autour de restaurer.

Votre code:

NSArray *selectedAnnotations = map.selectedAnnotations; for(id annotationView in selectedAnnotations) { [map    
deselectAnnotation:[annotationView annotation] animated:NO]; }

ce n'est pas correct. Il demande à la carte pour un tableau d'annotations, et les traite alors comme des vues d'annotation.

Une annotation est un objet de modèle de données. Il contient les données décrivant une annotation.

Une annotation objet VIEW est un objet d'affichage temporaire utilisé pour afficher une annotation sur la carte si elle est actuellement visible. Il n'y a pas toujours des vues d'annotation pour chaque annotation sur la carte.

Créé 12/11/2009 à 21:56
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more