4

誰でも使用方法を手伝ってもらえますか

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {

方法。

プロジェクト appart の注釈ピンに指示しようとしていますが、方法がわかりません。すべてのピンには開示ボタンがありますが、どのピンボタンが押されているかをプログラムがどのように認識するかわかりません。

4

1 に答える 1

2

ここでは、さまざまなテクニックを使用できます。

たとえば、annotationView ごとに ivar を保持して、次のようにすることができます。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
  if (view == myFirstAnnotationView) {
    //do something
  }
  if (view == mySecondAnnotationView) {
    //do something
  }
  if (view == myThirdAnnotationView) {
    //do something
  }
}

または、注釈ビューのタグ値を使用できます。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
  if ([view.tag isEqualToString@"one"]) {

  }
  if ([view.tag isEqualToString@"two"]) {

  }
}

または、MKAnnotationView をサブクラス化して、いくつかの動作を追加することもできます。

- (void)mapView:(MKMapView *)mapView annotationView:(MyMKAnnotationViewSubclass *)view calloutAccessoryControlTapped:(UIControl *)control {
 [view doAMethodIMadeWhenISubclassed];
}

これらはいずれも完全な解決策ではなく、アプリケーションと設計をよく理解せずに提供することは困難ですが、それらすべてに共通しているのは、何をすべきかを決定するためにマップに追加する前に、annotationView を変更することです。デリゲート コールバックが発生した後。これがあなたを正しい道に導いてくれることを願っています。

于 2010-06-02T00:01:59.557 に答える