2009-09-16 5 views
10

Ich bin kürzlich auf this website gestoßen und ich habe versucht, meiner Aufrufansicht eine Schaltfläche (aus einem Bild) hinzuzufügen.Hinzufügen einer Zubehöransicht-Schaltfläche zur MKMapView-Callout-Annotation?

Der Code auf dem Website-Beispiel funktioniert gut, aber wenn ich versuchte, den gleichen Code zu meinem Projekt hinzufügen, bekomme ich nicht die gleichen Ergebnisse.

Es gibt offensichtlich etwas, das ich vermisst habe, aber ich kann nicht scheinen, dass das funktioniert!

Hier ist mein Code für Kommentierung:

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{ 
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"]; 
    annView.pinColor = MKPinAnnotationColorGreen; 

    UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    advertButton.frame = CGRectMake(0, 0, 23, 23); 
    advertButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
    advertButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 

    [advertButton setImage:[UIImage imageNamed:@"button_right.png"] forState:UIControlStateNormal]; 
    [advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside]; 

    annView.rightCalloutAccessoryView = advertButton; 

    annView.animatesDrop=TRUE; 
    annView.canShowCallout = YES; 
    annView.calloutOffset = CGPointMake(-5, 5); 
    return annView; 
} 

Jede mögliche Hilfe würde geschätzt! :)

+0

Leider Der Link, den du zur Verfügung gestellt hast, ist tot –

Antwort

4

Es tut mir leid, meine eigene Frage zu beantworten, aber das wurde gelöst, indem ich den Delegaten von MKMapView auf den ViewController setzte. Puh, nahm mich eine Weile, um das herauszufinden und es ist so einfach !!

15

Dieser Typ verwendet ein benutzerdefiniertes Bild, um die Detailinformationen zu imitieren. Sie können tatsächlich die Standard-Detail Offenlegung erhalten ganz einfach:

[UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
+0

Ah danke, immer nützlich um Dinge zu tun, wie sie gemacht werden sollen :) –

11

Anstatt das Ziel der Einstellung, wie Sie hier tat:

[advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside]; 

Sie können den Standard Delegat verwenden:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control