Ich bin sehr neu in XCode und iPhone Entwicklung so wenden Sie sich bitte mit mir tragen, wenn diese Frage ist zu einfach. Aber ich habe eine Karte, und ich habe erfolgreich hinzugefügt Bilder (nicht Pins), um es für meine Anmerkungen. Und ich kann das Bild ändern, wenn der Benutzer eine der Anmerkungen auswählt.
Ich habe eine Klasse, die von MKAnnotationView mit den folgenden Methoden erbt: -
- (id)initWithAnnotation:
- (void)setAnnotation:
- (void)drawRect:
und ich bin mit
- (void)touchesBegan
zu wissen, wann eine Anmerkung ausgewählt wurde. Und in touchesBegan ich tue: -
UIImage *i = [UIImage imageNamed:@A.png];
self.image = i;
um das Bild zu ändern. Aber was ich wirklich bin ratlos ist, wie ändere ich das Bild wieder in seine ursprüngliche Bild ist, wenn der Benutzer die nächste Anmerkung auswählt. Ich habe versucht:-
NSArray *selectedAnnotations = map.selectedAnnotations;
for(id annotationView in selectedAnnotations) {
[map deselectAnnotation:[annotationView annotation] animated:NO];
}
aber es Fehler
und ich versuchte,
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;
}
}
}
Der obige Code funktioniert ok, bis ich ann.image bekommen = i; dann Fehler. Die Fehler, die wir bekommen sind: -
*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Place setImage:]: unrecognized selector sent to instance 0x4514370'
Ja kann ich sehen, dass mein Platz Objekt kein Bild hat, so dass ist, warum es nicht in Ordnung ist. Aber wenn ich eine Bild-Eigenschaft auf meinem Platz Objekt erstellen - wie wird das die Anmerkungen Bild ändern, die, was ich versuche zu tun.
Bitte raten, wie ich jetzt im Kreis auf diesen einen für 2 Tage geht um worden !!!!
Vielen Dank im Voraus Cheryl













