0

Core Data ドキュメント ベースのアプリケーションを構築しています。アプリには、メイン ビュー (NSTableView) とインスペクター ビューがあります。どちらのビューも別個の nib ファイルです。インスペクタ ビューの内容は、メイン ビューで選択した行に依存する必要があります。3 つのコントローラー ファイルがあります。

  • DocumentWindowController (マスター コントローラー)
  • ItemsViewController (メイン ビュー)
  • SchedulesViewController (インスペクターの一部)

すべてのコントローラーは nib ファイルを所有しています。ユーザーがメイン ビューのテーブルで別の行を選択したときに、インスペクターの内容を変更するにはどうすればよいですか?

私はそれを次のように機能させようとしました:

  • すべてのコントローラーには独自の NSArrayController があり、DocumentWindowController でセットアップされます。DocumentWindowController は、[[self document] managedObjectContext] からその managedObjectContext を取得します。
  • ユーザーが ItemsViewController の tableView の行をクリックすると、[NSTableView selectedRow] をパラメータとして NSNotification がポストされます。次に、フェッチ要求が行われています。

私の直感では、これを Cocoa バインディングで行う必要があります。Stackoverflow と google で検索しましたが、うまくいきません。すべてが1つのnibファイルにある場合、達成するのは非常に簡単です. これを達成するための最良/最も使用される方法は何ですか?

前もって感謝します!

4

1 に答える 1

1

テーブル ビューと同じパラダイムに従って、インスペクター ビューのデータ ソースを作成できます。

@protocol InspectorDataSource <NSObject>
- (void) inspectorView:(InspectorView*)inspectorView managedObjectSelected:(NSManagedObject*)managedObject;
@end

Inspector View Controller は、データ ソースをプロパティとして保持します。

@interface InspectorViewController : UIViewController{
    @public
    id<InspectorDataSource> dataSource;
}
@property (nonatomic, assign) id<InspectorDataSource> dataSource;
于 2012-02-07T16:50:16.170 に答える