0

誰かがピンに触れたときに、特定のピンのかなりの人口統計データを表示したいので、ポップアップを提供してもうまくいきません。ピンに触れたら、tableviewController を NavigationController に貼り付けるだけで、テーブル ビューがオブジェクトにアクセスして、行ごとに 1 つの項目と 1 つのセクションで単一のオブジェクト情報を表示できると考えました。

とにかく、 MKMapViewDelegates メソッドを理解するのに苦労しています。必要なことを実行したり、テーブルビューを返したり、そのビューをナビゲーションコントローラーにプッシュしたりできないように見えるためです。

私は遊んだ:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;   

しかし、それには MKAnnotationView が返される必要があり、ユーザーにすべてのデータのテーブル ビューを表示することで、このメソッドが機能する必要があります。私は userDidTouchPin メソッドのような単純なものを望んでいました....

私がやろうとしていることを達成する方法を知っている人はいますか?

4

1 に答える 1

2

ユーザーがピン (コールアウトのボタンではなく) を選択したときに何かをしたい場合は、mapView:didSelectAnnotationView:デリゲート メソッドを実装し、そこに詳細ビュー コントローラーを表示またはプッシュします。

選択した注釈オブジェクトは、パラメーターのannotationプロパティとして使用できます。view

- (void)mapView:(MKMapView *)mapView 
    didSelectAnnotationView:(MKAnnotationView *)view
{   
    YourDetailViewController *dvc = [[YourDetailViewController alloc] init...
    dvc.annotation = view.annotation;
    //present or push here
    [dvc release];
}

選択された注釈のタイプを確認する必要がある場合があり (例: MKUserLocation が選択されている場合は何もしないなど)、view.annotation を独自の注釈クラスにキャストして、カスタム プロパティに簡単にアクセスする必要がある場合があります。

于 2011-07-13T19:58:51.150 に答える