5

私のアプリケーションは位置データを使用し、テーブルとマップの両方で表示します。

タブ バー コントローラーから始まり、各ビューはナビゲーション コントローラーです (テーブル ビュー用、マップ用など)。

同じ管理対象オブジェクト コンテキストを使用するために UIManagedObject を共有したいので、ユーザーがテーブル ビューで更新すると、マップのデータも更新されるため、2 回更新する必要はありません。

もともと私は、Tab Bar Controller をサブクラス化し、UIManagedDocument をプロパティとして追加し、セグエ メソッドの準備で各コントローラーに渡すだけだと考えていました。しかし、私は UITabBarController がサブクラス化されることを意図していないことを読みました。

もう 1 つの方法として、View Controller を作成し、Managed Document をプロパティとして追加し、Tab Bar をそれに追加することができます。しかし、一部の関係をグラフィカルに表示し、他の関係をコードだけで表示すると、ストーリーボードが不明確または矛盾するようになると思います。

どれが適切ですか?または、それを行うより良い方法はありますか?

よろしくお願いいたします。

4

2 に答える 2

3
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showGuide"]) 
    {
        UITabBarController *tabBarController = (UITabBarController *)[segue destinationViewController];
        for (id vc in tabBarController.viewControllers) {      
            [vc setValue:_document forKey:@"document"];            
    }
}
于 2012-03-18T14:02:30.003 に答える
2

私もこの問題に遭遇し、ブロックを介してロードされたドキュメントへのアクセスを提供する別のドキュメント ハンドラー クラスに落ち着きました。

[[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
    // Do stuff with the document, set up a fetched results controller, whatever.
}];

私は自分のソリューションを作成し、ここにコードを投稿しました: Core Data with a Single Shared UIManagedDocument

于 2012-04-07T18:45:15.207 に答える