1

私のドキュメントベースのCoreDataアプリケーション(IBでバインディングを使用)には、EmployeeemployeeName属性を持つ)とTimeSheettimeDescription属性とentryDate属性を持つ)の2つのエンティティがあります。 従業員TimeSheetと1対多(employeeTimeSheet)の関係にあります。

TimeSheetエントリ用に設定されたMaster-Detailを作成しています。

マスターの場合、値がEmployeeController(Employeeエンティティを使用するNSArrayController)、arrangedObjectsemployeeNameにバインドされた1列のtableViewがあります。

EmployeeControllerselectionemployeeTimeSheetにバインドされたcontentSetを持つNSMutableDictionaryとして設定されたdetailController(別のNSArrayController)があります。

次に、3つの列を持つDetail tableViewがあり、それぞれの値はDetailControllerarrangedObjectsemployeeDetails.employeeName(列0)、 entryDate(列1)、およびtimeDescription(列2)にバインドされています。

これですべて正常に機能します。マスターテーブルから従業員を選択すると、詳細テーブルにその従業員に関連付けられているすべてのタイムシートエントリが表示されます。選択した従業員を使用してエントリを追加できます。すべてがうまく機能します。

私の問題は、tableViewをマスタービューとして使用する代わりに、従業員を選択してその従業員に関連付けられているすべての時間エントリを表示できる場所にNSPopupButtonが必要だったことです。

コンテンツ、値、arrangedObjects、selectedObjectなどのすべての組み合わせを、所有しているコントローラーのすべての組み合わせで試しましたが、NSPopupButtonを単一列のtableViewと同じように動作させることはできません。

私はこれについての詳細を無駄に検索し、バインディングのドキュメントを数回読みましたが、混乱し続けています。これは比較的単純なはずだと思いますが、理解できないようです。ここに投稿する前に、私はほぼ2日間頭を悩ませてきました。

誰かが私がどこで間違っているのか指摘できますか?私はコードを投稿しますが、それが主にIBのものであることを考えると、それは実際には適切ではありません。

ビリー。

4

2 に答える 2

1

ちなみに、detailControllerには新しい従業員オブジェクトが「自動的に」入力されます。必ず「managedObjectContext」を同じコントローラー(employeeController)に設定してください。

于 2011-09-01T20:51:04.413 に答える
0

わかりました、見つけました。ここに投稿した後、すぐに見つかると思いました。

NSPopupButtonコンテンツEmployeeControllerarrangedObjectscontentValueEmployeeControllerarrangedObjectsemployeeNameにバインドし、 selectedIndexEmployeeControllerselectionIndexにバインドしました。

よく働く。

ビリー。

于 2011-02-04T10:00:18.480 に答える