mapkit en annotaties

stemmen
0

Ik ben erg nieuw voor XCode en iPhone ontwikkeling dus geduld met me als deze vraag is te simpel. Maar ik heb een kaart en ik heb succesvol toegevoegd beelden (niet pinnen) om het voor mijn aantekeningen. En ik kan het beeld veranderen wanneer de gebruiker selecteert één van de annotaties.

Ik heb een klasse die erft van MKAnnotationView op de volgende manieren: -

- (id)initWithAnnotation:

- (void)setAnnotation:

- (void)drawRect:

en ik ben met behulp van

- (void)touchesBegan

om te weten wanneer een aantekening is geselecteerd. En in touchesBegan ik doe: -

UIImage *i = [UIImage imageNamed:@A.png];
self.image = i;

om het beeld te veranderen. Maar wat ik ben echt stumped over is hoe ik het beeld te veranderen terug naar het oorspronkelijke beeld wanneer de gebruiker selecteert de volgende annotatie. Ik heb geprobeerd:-

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

maar het fouten

en ik probeerde

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

}

de bovenstaande code werkt ok, totdat ik naar ann.image = i; Dan fouten. De fouten die ik krijg zijn: -

*** -[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, ik kan zien dat mijn plaats object een beeld niet over dus dat is waarom het fout gaat. Maar als ik een afbeelding eigenschap te maken op mijn plaats object - hoe zal dat imago van de annotaties wijzigen welke wat ik probeer te doen.

Gelieve te adviseren als ik ga al rond in cirkels op dit voor nu 2 dagen !!!!

Bij voorbaat dank Cheryl

De vraag is gesteld op 29/10/2009 om 15:56
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Cheryl,

Ik weet niet helemaal volgen wat je probeert te doen, maar hier zijn enkele gedachten:

Hier is wat ik zou doen om de oorspronkelijke afbeelding te herstellen:

In je subklasse van MKAnnotationView, voeg twee UIImage Properties,

firstImage en secondImage, opgezet om vast te houden.

Wanneer u de annotatie uitzicht init, het opzetten van beide beelden. (Op het punt waar u de afbeelding toe aan een annotatie uitzicht, maar ook opslaan op uw nieuwe firstImage eigendom)

Dan kun je zeggen

self.image = firstImage;

of

self.image = secondImage.

Dat zal de juiste afbeelding te wisselen op zijn plaats, terwijl de andere afbeelding rond om te herstellen.

Jouw code:

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

is niet goed. Vraagt ​​de kaart voor een serie van aantekeningen, en behandelt deze als annotatie bekijkt.

Een annotatie is een gegevensmodel object. Het bevat de gegevens beschrijven een annotatie.

Een aantekening VIEW object een tijdelijke weergave meetobject voor een aantekening op de kaart weer als het moment zichtbaar. Er zijn niet altijd uitzicht annotatie voor elke aantekening op de kaart.

antwoordde op 12/11/2009 om 21:56
bron van user

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