0

MKAnnotationプロトコルに準拠したアノテーションクラスがあります。このクラスには、座標、タイトル、サブタイトルを設定するinitメソッドがあります。

これらの注釈の配列を作成し、を使用して通常の方法でMKMapViewに追加しますaddAnnotations:annotationArray

次に、MKMapViewDelegageメソッド- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotationで、カスタムピンカラーanimatesDrop、canShowCalloutを使用してMKPinAnnotationViewを作成します。コールアウトには、タイプがのUIButtonがありますUIButtonTypeDetailDisclosure

アプリケーションを実行してマップ上のピンをクリックすると、期待どおりの結果が得られます。これは、タイトル、サブタイトル、およびdetailDisclosureボタンのあるコールアウトです。

私が理解しようとしているのは[self.navigationController pushViewController:detailsController animated:YES];、ユーザーが詳細開示ボタンをクリックしたときに、詳細ページ()にデータを渡す方法です。initメソッドにパラメーターを追加してアノテーションクラスを変更しようとしましたが、- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)controlメソッドでそのパラメーターにアクセスできません。そこからタイトルとサブタイトルにアクセスするには、このようなことをする必要があるよう[view.annotation title]です。

ここで何をすべきかわかりません。これを行う方法についてのドキュメントも見つからないようです...

また。オブジェクトを詳細ビューコントローラに渡したい。オブジェクトには、詳細ページで使用されるさまざまなデータが含まれます。

PS-ARC付きのXcode4.2を使用しています。

4

1 に答える 1

3

calloutAccessoryControlTapped、注釈参照は作成して追加した正確な注釈オブジェクトですが、参照は一般的に。として入力されid<MKAnnotation>ます。

アノテーションクラスのカスタムプロパティにアクセスするには、最初にそれをキャストできます。

YourAnnotationClass *myAnn = (YourAnnotationClass *)view.annotation;

//now you can explicitly reference your custom properties...
NSLog(@"myAnn.customProp = %@", myAnn.customProp);

「customProp」がアノテーションクラスのプロパティとして定義されていることを確認してください。

于 2012-02-25T23:23:04.660 に答える