Вы можете реализовать функцию загрузки данных в своем классе аннотаций.Для этого вам понадобится ссылка на эти данные в вашем классе аннотаций.
Ваш класс аннотаций может быть чем-то вроде
@interface MyAnnotation : NSObject<MKAnnotation> {
CLLocationCoordinate2D coordinate;
MyDataObject *mydataObject;
}
- (id) initWithCoordinate:(CLLocoationCoordinate2D)coord withMyData:(MyDataObject*)aDataObject;
- (void) loadDetailView; // this function will load the data in myDataObject to the DetailView
. Чтобы получить сенсорный вызов, вы можете реализовать функцию calloutAccessaryControlTapped в контроллере, где вы реализуете MKMapViewDelegate.
Функция будетбыть что-то вроде
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{
MyAnnotation *myAnnotation = (MyAnnotation*)view.annotation;
[myAnnotation loadDetailView];
}
Edit
Реализация initWithCoordinate будет выглядеть примерно так:
@implementation MyAnnotation
....
- (id) initWithCoordinate:(CLLocoationCoordinate2D)coord withMyData:(MyDataObject*)aDataObject{
coordinate = coord; // cannot use "self.coordinate" here as CLLocationCoordinate2D is double instead of object (?)
self.title = <# some name #> // assign some string to the title property
self.mydataObject = aDataObject; // this is your data object
return self;
}
....