MapKit und Anmerkungen

stimmen
0

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

Veröffentlicht am 29/10/2009 um 15:56
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Cheryl,

Ich weiß nicht ganz folgen, was Sie versuchen, zu tun, aber hier sind einige Gedanken:

Hier ist, was ich tun würde, um das Originalbild wiederherzustellen:

In der Unterklasse von MKAnnotationView, fügen Sie zwei UIImage Eigenschaften,

firstimage und secondImage, eingerichtet zu halten.

Wenn Sie die Anmerkungsansicht init, setzen beide Bilder auf. (An der Stelle, wo Sie das Bild auf Ihre Anmerkungsansicht zuweisen, speichern Sie sich auch auf Ihre neue Eigenschaft firstimage)

Dann kann man sagen,

self.image = firstimage;

oder

self.image = secondImage.

Das wird das entsprechende Bild an ihren Platz tauschen, während das andere Bild zu halten um wiederherzustellen.

Dein Code:

NSArray *selectedAnnotations = map.selectedAnnotations; for(id annotationView in selectedAnnotations) { [map    
deselectAnnotation:[annotationView annotation] animated:NO]; }

stimmt nicht. Es fragt die Karte für eine Reihe von Anmerkungen und dann behandelt sie als Anmerkung VIEWs.

Eine Anmerkung ist ein Datenmodell-Objekt. Sie enthält die Daten, die eine Anmerkung zu beschreiben.

Ein Anmerkung VIEW Objekt ist ein temporäres Anzeigeobjekt verwendet, um eine Anmerkung auf der Karte angezeigt werden, wenn sie zur Zeit sichtbar sind. Es gibt nicht immer Beschriftungsansichten für jede Anmerkung auf der Karte.

Beantwortet am 12/11/2009 um 21:56
quelle vom benutzer

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