19

私はいくつかのピンMKMapViewを含むを使用しています。 地図の上に、ピンの詳細情報を表示しています。MKAnnotation
UITableViewMKAnnotation

私の問題: ピンを選択すると、対応する表のセルを選択したいと思います。このために、ピンが選択されている場合にイベント/デリゲートをキャッチしたいと思います。コールアウト アクセサリの呼び出しについて話しているのではありません

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

3 に答える 3

42

これに対する単なる更新-iOS4には、注釈の選択と選択解除を追跡するために使用できるMKMapViewDelegateメソッドがあります。

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
于 2011-03-14T18:19:05.730 に答える
3

Selected-Event にオブザーバーを使用できます。

[pin addObserver:self
      forKeyPath:@"selected" 
         options:NSKeyValueObservingOptionNew
         context:@"ANSELECTED"];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

    NSString *action = (NSString*)context;

    if([action isEqualToString:@"ANSELECTED"]){

        BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
        if (annotationAppeared) {
            // clicked on an Annotation
        }
        else {
            // Annotation disselected
        }
    }
}
于 2009-11-10T08:46:01.793 に答える
1

MapKit でこれを行う簡単な方法は見たことがありません。mapView:annotationWasTapped:デリゲートにはありません。

これを行う 1 つの方法は、独自の注釈ビュー サブクラスを提供することです。カスタム注釈ビューは、ピンの選択をsetSelected:animated:低レベルのイベント ハンドラーでキャプチャし、その情報をビュー コントローラーに渡すことができます。

于 2009-10-21T21:04:39.040 に答える