Чистое решение знать, какой MKAnnotation коснулся?

Хорошо, таким образом, у Вас обычно есть некоторый объект 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 к последнему событию касания?

6
задан Stefano Verna 24 February 2010 в 21:24
поделиться

1 ответ

Если я правильно понял ваш вопрос, вы должны добавить ссылку или свойство к вашему классу 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];
}
17
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: