Хорошо, таким образом, у Вас обычно есть некоторый объект X, Вы хотите быть аннотированными в MKMapView. Вы делаете этот путь:
DDAnnotation *annotation = [[DDAnnotation alloc] initWithCoordinate: poi.geoLocation.coordinate title: @"My Annotation"];
[_mapView addAnnotation: annotation];
Затем Вы создаете представление аннотации внутри
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
И когда некоторая выноска касается, Вы обрабатываете событие внутри:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control;
Что самое чистое решение состоит в том, чтобы передать X к последнему событию касания?
Если я правильно понял ваш вопрос, вы должны добавить ссылку или свойство к вашему классу DDAnnotation, чтобы в вашем методе calloutAccessoryControlTapped вы могли получить доступ к объекту.
@interface DDAnnotation : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
id objectX;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) id objectX;
Когда вы создаете аннотацию:
DDAnnotation *annotation = [[DDAnnotation alloc] initWithCoordinate:poi.geoLocation.coordinate title: @"My Annotation"];
annotation.objectX = objectX;
[_mapView addAnnotation: annotation];
Тогда:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{
DDAnnotation *anno = view.annotation;
//access object via
[anno.objectX callSomeMethod];
}