そのため、アプリのマップにMKAnnotationViewsがありますが、コールアウトを表示するアノテーションを取得できないようです。これが私が試したコードのいくつかです:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *identifier = @"Bar";
if ([annotation isKindOfClass:[BarLocations class]]) {
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
} else {
annotationView.annotation = annotation;
}
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
annotationView.animatesDrop = YES;
//Doesn't work
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
button.frame = CGRectMake(0, 0, 23, 23);
annotationView.rightCalloutAccessoryView = button;
//Doesn't work
UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[leftButton setTitle:annotation.title forState:UIControlStateNormal];
[annotationView setLeftCalloutAccessoryView:leftButton];
annotationView.canShowCallout = YES;
//Doesn't work
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
rightButton.frame = CGRectMake(0, 0, 15, 15);
[rightButton addTarget:self
action:@selector(showDetails:)
forControlEvents:UIControlEventTouchUpInside];
annotationView.rightCalloutAccessoryView = rightButton;
return annotationView;
}
注-私はそれらのそれぞれを別々に試しました-私はすでに試したオプションを示すためにこの投稿にそれらをまとめました。
私は何が間違っているのですか?
編集
私は問題の大部分を理解したと思います:次のメソッドは決して呼び出されません:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
しかし、私はMkMapView
'sは'sのようなものだと思いUITableView
ました。だから私はそれをどのように呼ぶのですか?代理人を割り当てるのを忘れましたか?
どんな助けでもいただければ幸いです