2011-07-13 14 views
0

特定のピンの人口統計データをかなり触れて表示したいので、ポップアップを提供するとカットされません。ピンに触れたら、NavigationControllerにtableviewControllerを貼り付けるだけで、テーブルビューはオブジェクトにアクセスし、行ごとに1つのセクションと1つのセクションで単一のオブジェクト情報を表示します。MKMapViewのMKAnnotation(ピン)がタッチされた/押された/クリックされたときのTableViewの表示

とにかく、私はMKMapViewDelegatesメソッドを見つけ出すのに苦労しています。彼らの誰も私が必要とするものをやっていないと思われたり、テーブルビューを返したり、ナビゲーションコントローラにそのビューをプッシュすることができます。

私が遊ん:

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

しかし、それはMKAnnotationViewが返され、私は実際には、ユーザーにすべてのデータのテーブルビューを示すことによって動作するように、この方法を必要とすることが必要です。私はuserDidTouchPinメソッドのような単純なものを期待していました....

誰も私がしようとしていることを達成するためのアイデアはありますか?

答えて

2

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

選択した注釈オブジェクトは、viewパラメータのannotationプロパティとして提供されています:

- (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をキャストして、カスタムプロパティに簡単にアクセスする必要があります。

+0

ありがとうございます!ドキュメントの「注釈ビューの選択」セクションが表示されなかった理由は不明です。私はコントローラをリリースしたいとは思っていませんが、それはNavigationControllerによって処理されないのですか?私は前に「リリース」してしまったので質問しました。問題が発生しました。 – Justin

+0

ARCを使用している場合や、alloc + init行で 'autorelease'を行っている場合を除き、あなたは[release'する必要があります](http://developer.apple.com/library/ios/#DOCUMENTATION/General/Conceptual/ DevPedia-CocoaCore/MemoryManagement.html)。問題がある場合は、ビューコントローラ内に他の問題が存在する可能性があります。それに関する別の質問をし、エラーメッセージとスタックトレースを含めることができます。 – Anna

関連する問題