Frage

Ich habe über diese Website vor kurzem kommen und ich habe aus meinem Ruf versucht, eine Schaltfläche hinzufügen (von Bild) anzuzeigen.

Der Code auf der Beispiel-Websites funktioniert gut, aber wenn ich versuche, in dem gleichen Code zu meinem Projekt hinzufügen Ich bin nicht die gleichen Ergebnisse zu erzielen.

Es ist offensichtlich etwas, was ich verpasst habe, aber ich kann nicht scheinen, dieses heraus zu arbeiten!

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 Hilfe würde geschätzt! :)

War es hilfreich?

Lösung 3

Leider meine eigene Frage zu beantworten, aber dies, indem die Delegierten des MKMapView zum Viewcontroller gelöst wurde. Puh, dauerte eine Weile, um das herauszufinden und es ist so einfach !!

Andere Tipps

Der Typ eines benutzerdefiniertes Bild wird mit dem Detail Offenbarung zu imitieren. Sie können tatsächlich die Standard-Detail Offenlegung erhalten ganz einfach:

[UIButton buttonWithType:UIButtonTypeDetailDisclosure];

Anstatt das Ziel wie Sie hier taten:

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

Sie können den Standard Delegaten verwenden:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top