¿Agregar un botón de vista accesorio a la anotación de llamada MKMapView?
-
07-07-2019 - |
Pregunta
Recientemente me encontré con este sitio web y he estado intentando agregar a mi llamada ver un botón (de una imagen).
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 hay algo que me he perdido, pero parece que no puedo resolverlo!
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 apreciada! :)
Solución 3
Lamento responder mi propia pregunta, pero esto se resolvió configurando el delegado de MKMapView en ViewController. ¡Uf, me tomó un tiempo descubrirlo y es tan simple!
Otros consejos
Ese tipo está usando una imagen personalizada para imitar la divulgación detallada. En realidad, puede obtener la divulgación de detalles estándar con bastante facilidad:
[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
En lugar de establecer el objetivo como lo hizo aquí:
[advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];
Puede usar el delegado predeterminado:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control