2

Eigentlich entwickle ich etwas in meiner App, das Anmerkungen in meinem MKMapView anzeigt, und diese Anmerkungen sollten anklickbar sein und einen Parameter an eine Methode übergeben.
Das Problem besteht jetzt darin, wie der Parameter an die nächste Funktion übergeben wird, wenn Sie auf die Schaltfläche zum Anzeigen tippen.
Für die Formatierung der Anmerkungen verwende ich die - (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation Methode, um die Offenlegungstaste anzuzeigen. Aber das Problem ist, wie man Werte aus dem Annotation Objekt erhält, das im Moment angezeigt wird?MKAnnotationView und Weitergabe von Daten an eine andere Funktion

Mein Code für die Annotation (nur der relevante Teil):

@synthesize coordinate, id, title, subtitle; 

+ (id)annotationWithCoordinate:(CLLocationCoordinate2D)coordinate { 
    return [[[[self class] alloc] initWithCoordinate:coordinate] autorelease]; 
} 

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate { 
    self = [super init]; 

    if(nil != self) { 
     self.coordinate = coordinate; 
    } 

    return self; 
} 

Und wenn die Offenlegung Taste das Verfahren berühren - (void)displayInfo:(NSNumber *) anId; sollte mit der Übergabe Annotation.id als anId param aufgerufen werden.

Die Offenbarung Taste wird mit diesem Code generiert:

UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

    dropPin.rightCalloutAccessoryView = disclosureButton; 
    dropPin.animatesDrop = YES; 
    dropPin.canShowCallout = YES; 

So - die Frage:
Wie kann ich diese param an die Funktion übergeben oder die id des angeklickten Annotation lesen?

Ich dachte, ich könnte die Handhabung des Tap auf DisclosureButton entweder mit einem Selektor für UIButton tun (aber - wie die ID übergeben?) Oder mit - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control (wieder - wie die ID übergeben?).

Ich hoffe, Sie wissen, was ich meine und sehr großen Dank im Voraus für Ihre Antworten! :)

+0

Auch in Annotations-Klasse, es sieht aus wie Sie eine Eigenschaft namens „id“ deklariert haben? Ich empfehle Ihnen dringend, es anders zu nennen, und, wie ennuikiller antwortete, brauchen Sie es vielleicht nicht einmal. – Anna

+0

Das ist eine gute Idee ;-), du hast Recht. Vielen Dank für Ihre Hilfe. – thedom

Antwort

4

In calloutAccessoryControlTapped die Anmerkung über die Ansicht verfügbar:

MKAnnotation *annotation = view.annotation; 
+0

Das hat mir wirklich geholfen! Vielen Dank! – thedom

+0

herzlich willkommen! – ennuikiller

Verwandte Themen