我已将我的 UI 拆分为各种 nib 文件。
现在,我使用两个nswindowcontroller
子类nsarraycontroller
和nsobjectcontroller
IBOutlets。nwwindowcontroller 是其各自 nib 中的文件所有者。
控制器在 InterfaceBuilder (IB) 中分配。
以前在一个笔尖中,我使用“选择”的控制器键和“自我”的模型键路径将员工绑定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
似乎换了一个员工。
但我一直看到第一个员工从来没有被选中。
所选员工永远不会被设置为内容——或者更准确地说,所选员工不会替换默认的第一个员工。
请注意,每个nswindowcontroller
都有一个nsmanagedobject
通过 nsdocument 设置的上下文。它是笔尖中的文件所有者。