0

ねえ、私はiPhone用のmapKitについていくぶん密な質問を受けました。

私はMapKitフレームワークを使用しており、基本的にピンをクリックしてリロードし、再度追加した後にcallOutを表示しようとしています。

これは私が仕事に取り掛かろうとしているコードです。

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
    NSLog(@"count of selected Annotations: %d",[mapView selectedAnnotations].count);
    MKAnnotation* pin = view.annotation;
    [mapView deselectAnnotation:pin animated:FALSE];
    [mapView removeAnnotation:pin];
    [mapView addAnnotation:pin];
    [self.mapView selectAnnotation:pin animated:TRUE];

いくつかの所見:removeAnnotationsとaddAnnotationの行をコメントアウトすると、無限ループに入ります。これは、SelectAnnotation:pinを選択すると、コールバック(このメソッド)が呼び出されるためです...それ以外の場合は呼び出されませんが、 ?なぜそうではないのですか

[self.mapView selectAnnotation:pin animated:TRUE]; 

呼ばれていますか?

私はすでにあまりにも多くのことを読み、私のコードの説明と修正がリンクよりもはるかに役立つことを理解しようとして、何時間も頭を悩ませてきました。

前もって感謝します。〜Fydo

4

1 に答える 1

0

だから私は自分の質問に答えました...それをクリックしたときに注釈を変更する最も簡単な方法は次のようです:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
    MKAnnotation* pin = view.annotation;
    UIImageView * blackPin = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"PinUnchecked.png"]];
   [[mapView viewForAnnotation:pin] addSubview:blackPin];

このデリゲートメソッドが呼び出され、annotationViewバブルが表示され、annotationViewがその画像を変更します...これで必要な作業はすべて完了です...

于 2010-09-01T17:45:49.750 に答える