iPhone Dev = mapy a Odznačení anotace

hlasů
0

Jsem úspěšně kreslení anotací na mapě pomocí pole anotací. Já si dokonce klepnutím na anotaci a změnit jejich barvu nebo obrázek. Můj problém nastává, když je použití zvolí druhou anotaci a chci dynamicky měnit barvu nebo obraz první zpět na nevybrané barev / obrazu. Mohu získat pole všech anotací a pracovat přes pole, ale jakmile se snažím nastavit barvu nebo obrázek ot pole dostanu podobnou chybu.

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

výše uvedený kód funguje ok, dokud jsem se dostat do ann.image = i; Pak to chyby. Chyby I získat, jsou: -

  • - [Místo setImage:]: nerozpoznaná volič zaslán například 0x4514370 zakončovací aplikaci kvůli nezachycené výjimky ‚NSInvalidArgumentException‘, důvod: ‚** - [místo setImage:]: nerozpoznaná volič odeslána například 0x4514370‘

Prosím poradit, jak jsem se točí v kruzích na tento jeden za 2 dny teď !!!!

Jakékoli myšlenky na to, jak nejlépe to udělat?

Díky předem

Položena 29/10/2009 v 13:58
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Nakonec jsem přišel na to, jak to udělat. Jako obvykle to není tak těžké, jakmile víte, jak na to. Jen jsem se projít tohle.

- (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");
    }
  }
Odpovězeno 29/10/2009 v 20:23
zdroj uživatelem

hlasů
0

Máte nemovitost na třídě místo zvané image?

Něco jako ... @property (nonatomic, retain) UIImage* image;a je to správně syntetizován? @synthesize image;?

Tato chyba je poměrně přímočará, nějaký předmět dostává zprávu, že nereaguje na, a sice ‚setImage‘, která je vyvolána podle .image.

Zde je váš kód:

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

To, co vidím:

  • Ann je MKAnnotationView (od map.selectedAnnotations)
  • jste typecasting anotaci na místo na lince 3 (je to pravda? Má Place podtřídy MKAnnotationView?)
  • máte správné nastavení obrazu pro anotaci

Co to znamená:

  • Pokud Place je opravdu podtřídou MKAnnotationView jste schoval (nějak) metodu setImage
  • Pokud místo není podtřídou MKAnnotationView, jste přidali neplatný anotaci k anotací (jistotu), že se snažíte zacházet jako anotace.
Odpovězeno 29/10/2009 v 14:05
zdroj uživatelem

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