0

そのため、アプリのマップに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ました。だから私はそれをどのように呼ぶのですか?代理人を割り当てるのを忘れましたか?

どんな助けでもいただければ幸いです

4

1 に答える 1

0

mapView'sしたがって、問題は、デリゲートが実装されているクラスにデリゲートをリンクするのを忘れたことであることが判明しました。したがって、メソッドがそこにあり、正しいとしても、デリゲート メソッドが呼び出されることはありませんでした。デリゲートを接続すると、完全に機能しました。

于 2012-07-14T19:44:42.693 に答える