2009-12-06 17 views
5

Quiero agregar una anotación a un MapView con el botón de divulgación en él y no puedo encontrarlo.Agregar una anotación clicable a un UIMapView

He creado una clase de marcas de posición que se ajusta al protocolo MKAnnotation y luego crear el MapView y añadir la marca de posición:

// Add annotation information 
PlaceMark *venuePlacemark = [[PlaceMark alloc] initWithCoordinate:location]; 
venuePlacemark.locationTitle = [locationDictionary valueForKey:VENUE_NAME_KEY]; 
venuePlacemark.locationSubtitle = @"Touch to show in Google Maps"; 

// Create the accessory button on the placemark 
[venueMap addAnnotation:venuePlacemark]; 
[venueMap setRegion:region animated:TRUE]; 
[venueMap regionThatFits:region]; 

Todo esto funciona y un alfiler se muestra que cuando se toca muestra la llamada correcta a cabo el texto . No puedo encontrar la manera de agregar un botón de divulgación a la llamada. Lo siento si esto es elemental y cualquier ayuda sería apreciada.

de Dave

+0

Es una buena pregunta. La documentación sobre esto es algo terrible. Apple realmente asume muchos conocimientos veteranos sobre su SDK cuando escriben estos documentos, parece. –

Respuesta

9

creo que he averiguado ... implementó el siguiente método delegado:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    MKPinAnnotationView *dropPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"venues"]; 

    UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    [disclosureButton addTarget:self action:@selector(mapCallOutPressed:) forControlEvents:UIControlEventTouchUpInside]; 

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

    return dropPin; 
} 
+2

Esto funciona, pero en lugar de [revealButotn addTarget] probablemente deberías estar usando el método delegate predefinido - (void) mapView: (MKMapView *) mapView annotationView: (MKAnnotationView *) ver calloutAccessoryControlTapped: (UIControl *) control –

+0

Gracias Jasconius ... le dará un giro ... –

Cuestiones relacionadas