0

UI をさまざまな nib ファイルに分割しました。

現在、IBOutletsと2 つのnswindowcontrollerサブクラスを使用しています。nwwindowcontrollers は、それぞれの nib のファイルの所有者です。nsarraycontrollernsobjectcontroller

コントローラーは、InterfaceBuilder (IB) で割り当てられます。

以前は1つのペン先で、「selection」のコントローラーキーと「self」のモデルキーパスを使用して、従業員nsarraycontrollerから単一の従業員へのバインディングがありましたnsobjectcontroller

今、私はコードを介してそれらを「バインド」しようとしています。

- (IBOutlet) showEmployeeWindow:(id)sender;

//load a window from a nib file.
    ...

// Get the employee arraycontroller.
NSArrayController *employeesController = [employeesWindowController employeeArrayController];  

// Get the selected employee from the employeeS controller
id employee = [empController selection]; 

//now the employee 
NSObjectController *emplController = [singleEmployeeWindowController employeeController];

//Set the content object of the employee controller as the nsset called employees.
[emplController setContent: employee]; 

//Show the window.
[singleEmployeeWindowController showWindow:sender];

    ...

}

問題。

デバッグは、選択された従業員の異なるメモリ アドレスを示しています。すなわち、ライン

id employee = [empController selection]; 
// Get the selected employee from the employeeS controller

別の従業員を取得するようです。

しかし、私は常に最初の従業員が選択された従業員ではないことを確認しています。

選択された従業員がコンテンツとして設定されることはありません。より正確には、選択された従業員はデフォルトの最初の従業員を置き換えません。

それぞれに nsdocument を介して設定されnswindowcontrollerたコンテキストがあることに注意してください。nsmanagedobjectそのペン先のファイルの所有者。

4

1 に答える 1