マスターのポップアップボタンの使用-詳細
-
28-10-2019 - |
質問
私のドキュメントベースのCoreDataアプリケーション(IBでバインディングを使用)には、従業員(従業員名属性を持つ)とタイムシートの2つのエンティティがあります。 ( timeDescription および entryDate 属性を使用)。 従業員は、タイムシートと1対多(従業員タイムシート)の関係にあります。
タイムシートエントリ用に設定されたマスター詳細を作成しています。
マスターの場合、値が EmployeeController (Employeeエンティティを使用するNSArrayController)、 ArrangedObjects <にバインドされた1列のtableViewがあります。 / strong>、 employeeName 。
contentSet が EmployeeController 、 selection 、<にバインドされたNSMutableDictionaryとして設定されたdetailController(別のNSArrayController)があります。 strong> employeeTimeSheet 。
次に、3つの列を持つDetail tableViewがあり、それぞれの value が DetailController 、 ArrangedObjects 、 employeeDetails.employeeNameにバインドされています。 (列0)、 entryDate (列1)、 timeDescription (列2)。
これですべて正常に機能するようになりました。マスターテーブルから従業員を選択すると、詳細テーブルにその従業員に関連付けられているすべてのタイムシートエントリが表示されます。選択した従業員を使用してエントリを追加できます。すべてがうまく機能します。
私の問題は、tableViewをマスタービューとして使用する代わりに、従業員を選択してその従業員に関連付けられているすべての時間エントリを表示できる場所にNSPopupButtonが必要だったことです。
コンテンツ、値、arrangedObjects、selectedObjectなどのすべての組み合わせを、所有しているコントローラーのすべての組み合わせで試しましたが、NSPopupButtonを単一列のtableViewと同じように動作させることができません。>
これについての詳細を無駄に検索し、バインディングのドキュメントを数回読みましたが、混乱し続けています。これは比較的単純なはずだと思いますが、理解できないようです。ここに投稿する前に、私はほぼ2日間頭を悩ませてきました。
私がどこで間違っているのか誰かが指摘できますか?私はコードを投稿しますが、それが主にIBのものであるため、それは実際には適切ではありません。
ビリー。
解決 2
わかりました、見つかりました。ここに投稿した後、すぐに見つかると思いました。
NSPopupButton content を EmployeeController に、 ArrangedObjects 、 contentValue を EmployeeController 、 ArrangedObjects 、 employeeName であり、 selectedIndex から EmployeeController 、 selectionIndex です。
うまく機能します。
ビリー。
他のヒント
ちなみに、detailControllerには新しい従業員オブジェクトが「自動的に」入力されます。「managedObjectContext」を同じコントローラー(employeeController)に設定してください。