ver recuperar pantalla notificaciones historial funciona como centro borradas bloqueada iphone objective-c ios cocoa-touch mkmapview

pantalla - recuperar notificaciones iphone



Detalles de la anotación después de la divulgación de detalles presionada? (2)

Tengo un objeto de anotación MKMapView que tiene un botón de revelación de detalles de accesorio de llamada derecha. Cuando se presiona el botón, utilizo addTarget: action: forControlEvent para llamar a un método selector que crea un detalle viewController y lo empuja a la pila de visualización.

Mi pregunta es cuál es la mejor forma de acceder a la información en la anotación que inició el controlador de detalles de las llamadas. El botón de divulgación de detalles está configurado para llamar:

[button addTarget:self action:@selector(disclosurePressed:) forControlEvents:UIControlEventTouchUpInside];

Que se ve así:

- (void)disclosurePressed:(id)sender { }

Supongo que podría buscar la anotación principal del UIButton del remitente, ¿alguien puede darme algún consejo sobre cómo se hace esto mejor?


Es posible que le resulte más fácil utilizar el MKMapViewDelegate mapView:annotationView:calloutAccessoryControlTapped: , que le indica directamente qué vista de anotación se pulsó.


Una forma confiable (si debe usar un método personalizado) es mirar la propiedad selectedAnnotations la vista del mapa.

Aunque la propiedad es un NSArray , dado que la vista de mapa solo permite seleccionar una anotación a la vez, la que el usuario acaba de tocar estará en el índice 0, por lo que sería:

id<MKAnnotation> annTapped = [mapView.selectedAnnotations objectAtIndex:0]; //Here, you can cast annTapped to a custom annotation class if needed. //Be sure to check what kind of class it is first.

También es posible que desee verificar primero que mapView.selectedAnnotations.count no sea cero solo para estar seguro.


Sin embargo, una mejor manera (como nevan King ya respondió) que utilizar addTarget y un método de acción personalizado es usar el método de delegado calloutAccessoryControlTapped la vista de mapa donde se puede acceder directamente a la anotación a través del parámetro view usando:

id<MKAnnotation> annTapped = view.annotation;