2009-09-16 19 views
10

Recientemente me he encontrado con this website y he estado tratando de agregar a mi llamada ver un botón (desde una imagen).¿Agregar un botón de vista de accesorio a la anotación de llamada de MKMapView?

El código en el ejemplo de sitios web funciona bien, pero cuando traté de agregar el mismo código a mi proyecto, no obtengo los mismos resultados.

Obviamente, es algo que he echado de menos pero parece que no puedo solucionarlo.

Aquí está mi código para anotar:

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

Cualquier ayuda sería muy apreciada! :)

+0

Por desgracia, El enlace que proporcionó está muerto –

Respuesta

4

Lamento contestar mi propia pregunta, pero esto fue resuelto estableciendo el delegado de MKMapView en ViewController. ¡Uf, me tomó un tiempo darme cuenta de eso y es muy simple!

15

Ese tipo está usando una imagen personalizada para imitar la divulgación de detalles. Usted puede conseguir realmente el detalle divulgación estándar con bastante facilidad:

[UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
+0

Ah, gracias, siempre es útil hacer las cosas que se deben hacer :) –

11

En lugar de fijar el objetivo, como lo hizo aquí:

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

Usted puede utilizar el delegado por defecto:

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