При использовании библиотеки MapKit и размещении булавки / MKAnnotation вы реализуете класс MKAnnotation, имеющий координаты, имя и описание:
@interface MyAnnotationClass : NSObject <MKAnnotation> {
NSString *_name;
NSString *_description;
CLLocationCoordinate2D _coordinate;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
-(id) initWithCoordinate:(CLLocationCoordinate2D) coordinate;
@end
Эти основные сведения отображаются, когда булавка помещена накарта.Однако, когда вы хотите, чтобы на том же выводе была кнопка, вы реализуете следующий метод в делегате MapViews:
-(MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation {
...
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return(annotationView);
}
Почему это соглашение?Я ожидаю, что 'rightCalloutAccessory' будет частью MKAnnotation.Я знаю, что это необязательно, может ли быть так, что объект rightCallout является частью более конкретного метода?
Меня смущает, потому что вы устанавливаете атрибуты Пина при создании объекта MKAnnotation, но затем устанавливаете другие атрибуты, когда этот пин размещается на карте.Почему оба они не сделаны в одном и том же месте?Можно ли сделать это таким образом?