iPhone Dev = cartes et annotations désélection

voix
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 une image. Mon problème se pose lorsque l'utilisation sélectionne la deuxième annotation et je veux changer dynamiquement la couleur ou l'image du premier retour à une couleur non-sélectionnée / image. Je peux obtenir le tableau de toutes les annotations et de travailler à travers le réseau, mais une fois que je tente de définir la couleur ou l'image du tableau ot j'obtiens une erreur similaire.

for (MKAnnotationView *ann in map.selectedAnnotations){ 
  if ([ann isMemberOfClass:[Place class]]) { 
    place = (Place *)ann; 
      if (currentPlaceID != place.placeID) { 
        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: -

  • - [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 !!!!

Toutes les idées sur la meilleure façon de le faire?

Merci d'avance

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


2 réponses

voix
0

J'ai finalement compris comment faire cela. Comme d'habitude, ce n'est pas difficile une fois que vous savez comment. Juste pensé que je transmettre ce.

- (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");
    }
  }
Créé 29/10/2009 à 20:23
source utilisateur

voix
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 qu'il ne répond pas à, à savoir « setImage » qui est invoquée par le .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:

  • Ann est un MKAnnotationView (de map.selectedAnnotations)
  • vous typecasting votre annotation à une place sur la ligne 3 (est-ce pas? Est-ce que la sous-classe MKAnnotationView place?)
  • vous configurez correctement l'image à l'annotation

Qu'est-ce que cela signifie:

  • Si le lieu est en effet une sous-classe de MKAnnotationView, vous avez caché la méthode setImage (en quelque sorte)
  • Si le lieu est pas une sous-classe de MKAnnotationView, vous avez ajouté une annotation non valide aux annotations (sûr) que vous essayez de traiter comme une annotation.
Créé 29/10/2009 à 14:05
source utilisateur

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