0

私は地図を持っていて、地図には注釈があり、これらの注釈をテーブルビューでセルとして見ることができ、xcodeのマスター詳細プロジェクトのように選択したセルの詳細を見ることができます

このような

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Object *object = [self.objects objectAtIndex:indexPath.row];
DetailsViewController *detailsViewController = segue.destinationViewController;
detailsViewController.detailItem = object;
}

コードは、詳細ビューにプッシュされるテーブル ビューのセル用でした

しかし、ユーザーが注釈で UIButtonTypeDetailDisclosure を押すと、ボタンはセルがテーブルビューに移動するのと同じ DetailsViewController に移動します

これを行うことは可能ですか?

calloutAccessoryControlTapped について読んだことがありますが、選択した注釈を DetailsViewController で宣言した detailItem にする方法がわかりません

ありがとうございました : )

4

1 に答える 1

3

あなたが何を求めているのか少し不明です。いくつかの推測とその答えを次に示します。

マップ コールアウト アクセサリ ボタンからセグエを実行するにはどうすればよいですか?

IB のコントロール (テーブル セル、ボタンなど) からのドラッグは、UIKit がすべてを処理できるため、セグエを作成する良い方法です。コントロールがタップされると、セグエが自動的に実行されます。ただし、セグエを作成できないコントロールや、セグエの実行をプログラムで制御したい場合があります。そのためには、IB でビュー コントローラー自体からドラッグしてセグエを作成します。セグエに一意の識別子を指定すると、View Controller で[self performSegueWithIdentifier:@"myIdentifier"]、セグエを発生させたいときにいつでも呼び出すことができます。

この場合、おそらく 内からそれを呼び出しますmapView:annotationView:calloutAccessoryControlTapped:

この種のセグエでモデルオブジェクトを次のView Controllerに渡すにはどうすればよいですか?

おそらくモデルオブジェクトはMKAnnotationプロトコルに準拠しており、 addAnnotation(s):. その場合、マップ デリゲート (おそらくビュー コントローラー) のmapView:annotationView:calloutAccessoryControlTapped:メソッドが呼び出されると、2 番目のパラメーターは対応する への参照を持ちますMKAnnotationView。そのクラスには、annotationモデル オブジェクトを指すプロパティがあります。

もちろん、このメソッドでは を呼び出しているだけperformSegueWithIdentifier:なので、宛先のビュー コントローラーにはまだアクセスできません。そのため、今のところそのモデル オブジェクト参照 (ivar など) を保持する必要があります。そうすれば、prepareForSegue:sender:実装でそれを宛先のビュー コントローラーに渡すことができます。

于 2012-05-28T05:40:56.153 に答える