iPhone Dev = mapas y deseleccionar anotaciones

votos
0

Estoy dibujando anotaciones con éxito en un mapa usando una variedad de anotaciones. Incluso puedo hacer clic en la anotación y cambiar su color o imagen. Mi problema surge cuando el uso selecciona la segunda anotación y quiero cambiar dinámicamente el color o la imagen de la primera a un color / imagen no seleccionada. Puedo obtener la matriz de todas las anotaciones y trabajar a través de la matriz, pero una vez que intento establecer el color o la imagen de la matriz, obtengo un error similar.

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; 
      }
}

el código anterior funciona bien hasta que llegue a ann.image = i; entonces comete un error. Los errores que obtengo son:

  • - [Place setImage:]: selector no reconocido enviado a la instancia 0x4514370 Aplicación de finalización debido a la excepción no detectada 'NSInvalidArgumentException', razón: '** - [Place setImage:]: selector no reconocido enviado a la instancia 0x4514370'

Por favor, avisar ya que he estado dando vueltas en círculos en este durante 2 días.

¿Alguna idea sobre la mejor manera de hacer esto?

gracias por adelantado

Publicado el 29/10/2009 a las 13:58
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Finalmente descubrí cómo hacer esto. Como de costumbre, no es tan difícil una vez que sabes cómo. Solo pensé que pasaría esto.

- (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");
    }
  }
Respondida el 29/10/2009 a las 20:23
fuente por usuario

votos
0

¿Tiene una propiedad en la clase Place called called image?

Algo así como ... ¿ @property (nonatomic, retain) UIImage* image;y está bien sintetizado? @synthesize image;?

El error es bastante sencillo, algunos objetos reciben un mensaje al que no responden, a saber, 'setImage' invocado por .image.

Aquí está tu código:

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. }

Lo que puedo ver:

  • ann es una MKAnnotationView (de map.selectedAnnotations)
  • está encasillando su anotación a un lugar en la línea 3 (¿es correcto? ¿Coloca la subclase MKAnnotationView?)
  • está configurando correctamente la imagen en la anotación

Lo que esto significa:

  • Si Place es de hecho una subclase de MKAnnotationView, ocultaste el método setImage (de alguna manera)
  • Si Lugar no es una subclase de MKAnnotationView, ha agregado una anotación no válida a las anotaciones (seguro) que está tratando de tratar como una anotación.
Respondida el 29/10/2009 a las 14:05
fuente por usuario

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