質問

誰もが使用する方法について私を手伝ってもらえますか

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

方法。

私はプロジェクトAppartで注釈ピンを伝えようとしていますが、その方法はわかりません。すべてのピンには開示ボタンがありますが、プログラムがどのピンボタンが押されているかをプログラムがどのように知るかを理解できません。

役に立ちましたか?

解決

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

たとえば、各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];
}

いずれにも、これらのうちの完全なソリューションであり、Beterがアプリケーションとデザインを理解していない場合は提供するのは難しいでしょうが、それらがすべて共通しているのは、何をすべきかを決定するためにマップに追加する前にAnnotationViewを変更することですデリゲートコールバックが発生した後。これがあなたを正しい道に導くことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top