10

私は最近、この Web サイトに出くわし、呼び出しビューに (画像から) ボタンを追加しようとしています。

Web サイトの例のコードは問題なく動作しますが、同じコードを自分のプロジェクトに追加しようとすると、同じ結果が得られません。

明らかに私が見逃したものがありますが、これを解決できないようです!

注釈を付けるための私のコードは次のとおりです。

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
    MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
    annView.pinColor = MKPinAnnotationColorGreen;

    UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeCustom];
    advertButton.frame = CGRectMake(0, 0, 23, 23);
    advertButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    advertButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

    [advertButton setImage:[UIImage imageNamed:@"button_right.png"] forState:UIControlStateNormal];
    [advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];

    annView.rightCalloutAccessoryView = advertButton;

    annView.animatesDrop=TRUE;
    annView.canShowCallout = YES;
    annView.calloutOffset = CGPointMake(-5, 5);
    return annView;
}

どんな助けでも大歓迎です!:)

4

3 に答える 3

15

その男は、詳細の開示を模倣するためにカスタム画像を使用しています。実際には、標準の詳細開示を非常に簡単に取得できます。

[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
于 2009-10-08T19:03:07.933 に答える
11

ここで行ったようにターゲットを設定する代わりに:

[advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];

デフォルトのデリゲートを使用できます。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
于 2010-01-15T00:30:32.333 に答える
4

私自身の質問に答えて申し訳ありませんが、これは MKMapView のデリゲートを ViewController に設定することで解決しました。ふぅ、それを理解するのにしばらく時間がかかりました、そしてそれはとても簡単です!!

于 2009-09-16T15:27:56.160 に答える