0

私はこれについてドキュメントで何かを見たが、それを見つけることができないことを誓います(何を探すべきかわからないため)。

基本的に私のアプリでは、最初のVCは、ユーザーが注釈を選択できるマップと、それぞれにある呼び出しボタンで構成されています。それ以外の場合、ユーザーは、マップ上の建物の検索可能なテーブルを開き、詳細を表示するビューコントローラーをロードするボタンを選択することもできます(基本的にマスター/詳細設定)。

私がやりたいのは、コールアウトがその特定の建物の指定されたパスをロードすることです。したがって、建物Aのコールアウトをタップすると、詳細ビ​​ューコントローラが開き、情報が表示されます。

これを行うにはどうすればよいですか、またはどのドキュメントが役立ちますか?

4

1 に答える 1

0

これを読むと、マップビューとテーブルビューが同じビューコントローラに属しているように聞こえます。もしそうなら、ビューコントローラは物事を一元化したい場所です。ここでも、モデルがデータオブジェクトの配列であると想定して、さまざまなビューを調整するすべての作業を実行するメソッドをコントローラーに用意します。

- (void)selectModelAtIndex:(NSUInteger)index sender:(id)sender
{
    if (self.isSelectingModel)
        return;
    self.isSelectingModel = YES; // Stops recursive calls to -selectModelAtIndex:

    NSIndexPath *indexPath = [self indexPathForModelAtIndex:index];
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone;
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNon animate:NO];

    MKAnnotation *annotation = [self annotationForModelAtIndex:index];
    [self.mapView selectAnnotation:av.annotation animated:NO];

    [self performSegueWithIdentifier:@"Identifier Of Detail View" sender:sender];

    self.isSelectingModel = NO;
}

これは、詳細ビューコントローラにセグエする前にtableViewとmapViewの同期を維持する単一のメソッドです。isSelectingModelプロパティ-indexPathForModelAtIndex:、、、が必要です-annotationForModelAtIndex:

このメソッドはテーブルビューによって呼び出され、マップビューはコールバックを選択しました。

于 2012-08-28T23:19:00.483 に答える