2009-10-29 5 views
0

Je dessine avec succès des annotations sur une carte en utilisant un tableau d'annotations. Je peux même cliquer sur l'annotation et changer sa couleur ou son image. Mon problème se pose lorsque l'utilisation sélectionne la deuxième annotation et que je veux changer dynamiquement la couleur ou l'image du premier en une couleur/image non sélectionnée. Je peux obtenir le tableau de toutes les annotations et travailler à travers le tableau mais une fois que j'essaie de définir la couleur ou l'image du tableau, j'ai une erreur similaire. Le code ci-dessus fonctionne bien jusqu'à ce que j'arrive à ann.image = i; alors il erreurs. Les erreurs que je reçois sont: -iPhone Dev = cartes et annotations de désélection

  • - [Lieu setImage]: sélecteur non reconnu envoyé à l'instance 0x4514370 en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', raison: « ** - [Lieu setImage:] : sélecteur non reconnu envoyé à l'instance 0x4514370'

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

Des idées sur la meilleure façon de faire cela?

merci à l'avance

Répondre

0

Avez-vous une propriété sur la place de classe appelée image?

Quelque chose comme ... @property (nonatomic, retain) UIImage* image; et est-il correctement synthétisé? @synthesize image;? L'erreur est assez simple, un objet reçoit un message auquel il ne répond pas, à savoir 'setImage' qui est invoqué par le fichier .image.

Voici votre code:

1. for (MKAnnotationView *ann in map.selectedAnnotations) { 
2. if ([ann isMemberOfClass:[Place class]]) { 
3.  place = (Place *)ann; 
4.  if (currentPlaceID != place.placeID) { 
5.   UIImage *i = [UIImage imageNamed:@"pin.png"]; 
6.   ann.image = i; 
7.  } 
8. } 
9. } 

Ce que je peux voir:

  • est une MKAnnotationView ann (de map.selectedAnnotations)
  • vous typecasting votre annotation à un endroit sur la ligne 3 (est-ce juste? Place la sous-classe MKAnnotationView?)
  • vous réglez correctement l'image sur notation

Ce que cela signifie:

  • Si le lieu est en effet une sous-classe de MKAnnotationView, vous cachèrent Si Place est pas une sous-classe de MKAnnotationView, vous avez ajouté la méthode setImage (en quelque sorte)
  • une annotation invalide aux annotations (bien sûr) que vous essayez de traiter comme une annotation.
+0

Merci pour votre réponse et je vais certainement essayer cela, mais je ne pense pas que cela vous aidera que l'image est dessinée en définissant l'annotation non par - (void) setAnnotation: annotation (id ) non dans le lieu de classe. – Cheryl

+0

Je veux changer l'image de l'annotation pas la propriété sur l'objet lieu. – Cheryl

+0

À droite, cependant, vous êtes 1) en lançant votre annotation sur un lieu et 2) puis en lui envoyant le message '.setImage'. Ce n'est probablement PAS ce que vous voulez faire. (Voir le montage qui arrive dans une minute) – Malaxeur

0

J'ai finalement compris comment faire cela. Comme d'habitude, ce n'est pas si difficile une fois que vous savez comment. Je pensais juste que je transmettrais ça.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    { 
    [super setSelected:selected animated:animated]; 
    NSLog(@"here I am in set selected"); 
    if (YES == selected) 
    { 
     NSLog(@"I am selected"); 
    } 
    else 
    { 
    self.backgroundColor = [UIColor clearColor]; 
     NSLog(@"not selected"); 
    } 
    }