MKAnnotation
プロトコルに準拠する注釈クラスがあります。クラスには、座標、タイトル、およびサブタイトルを設定するinitメソッドがあります。MKPinAnnotationViewコールアウトボタンはカスタムオブジェクトをDetails ViewControllerに渡す必要があります
私は、これらのアノテーションの配列を作成し、addAnnotations:annotationArray
を使用してMKMapViewに通常の方法を追加します。
次に、MKMapViewDelegageメソッド- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
で、カスタムピンカラーanimatesDrop、canShowCalloutを使用してMKPinAnnotationViewを作成します。コールアウトにはタイプUIButtonTypeDetailDisclosure
のUIButtonがあります。
私は、アプリケーションを実行し、地図上のピンをクリックすると、私は、タイトル、サブタイトル、およびdetailDisclosureボタンと吹き出しで期待される結果が得られます。
私が把握しようとしている事は、ユーザが、詳細開示ボタンをクリックすると詳細ページ([self.navigationController pushViewController:detailsController animated:YES];
)にデータを渡す方法です。私は、追加のパラメータをinitメソッドに追加することでアノテーションクラスを変更しようとしましたが、- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
メソッドでそのパラメータにアクセスすることはできません。このようなことをして、タイトルとサブタイトルにアクセスできるのは、[view.annotation title]
のようです。
私はここで何をすべきかわからないんだけど、私は再び...どちらか
をこれを行う方法上の任意のドキュメントを見つけるように見えることはできません。詳細ビューコントローラにオブジェクトを渡したいと思います。オブジェクトには詳細ページで使用されるさまざまなデータが含まれています...
PS - 私はXcode 4.2 w/ARCを使用しています。
ええ、最初に 'myAnn'のクラスタイプを確認してください。ユーザーが「現在地」の注釈をタップすると、このメッセージも表示されます。クラスの1つであると仮定している場合は、実装されていない例外が発生します。 – Steve
アンナありがとう、これは美しく働いた!また、現在の場所の問題を指摘してくれたSteveに感謝します。私はこのエラーを防ぐためにいくつかの追加コードを実装しました。if([myMapAnnotation isKindOfClass:[MyMapAnnotation class]]) ' – ElasticThoughts
@ Steve、Good point、ありがとう。 – Anna