我有一个非常简单的应用程序。它是一个基于非文档的 CoreData 应用程序。nib 包含一个 NSArrayController 和一个带有一列 NSTable 的窗口。表格下方是三个按钮,添加、删除和获取。在按钮下方,我有一个 NSTextField 和第四个标记为 Save 的按钮。
我的模型有两个实体,部门一个员工。部门有一个属性,名称。我目前没有使用员工。
在 AppDelegate.h 我添加了以下代码:
@interface HMGAppDelegate : NSObject <NSApplicationDelegate>
{
NSArrayController *_departments;
}
@property (retain) IBOutlet NSArrayController *departments;
并在 AppDelegate.m
- (void) awakeFromNib
{
[[self departments] fetch:nil];
}
按钮必须在 NSArrayController 上添加:remove: 和 fetch:。保存按钮绑定保存:在 AppDelegate 上
NSTextField 绑定到 nib 中 NSArrayController 的实例,ControllerKey 为 selection,Model Key Path 为:name
当我运行应用程序时,我可以创建新实体并更改实体的值。这一切都很好。
不起作用的是表格中的选择。更改表中选定的行不会导致在 NSArrayController 中选择该行的值。我知道我可以在表格上放置一个代表 catch SelectionDidChange 并在 ArrayController 上显式设置选择,但我想知道是否有更简单的方法来做到这一点。
我已经看到其他示例,其中有两个表视图,表示一对多关系。第一个表中的选择会导致第二个表显示相关实体。(例如选择一个部门会显示该部门的员工)。在我正在查看的示例中,似乎没有 NSTableDelegate。
我错过了什么?NSTableView 如何将它的选择传回给 NSArrayController?