【发布时间】:2012-04-06 11:46:01
【问题描述】:
我有一个非常简单的应用程序。它是一个基于非文档的 CoreData 应用程序。 nib 包含一个 NSArrayController 和一个带有一列 NSTable 的窗口。表格下方是三个按钮,添加、删除和获取。在按钮下方,我有一个 NSTextField 和第四个标记为 Save 的按钮。
我的模型有两个实体,部门一个员工。部门有一个属性,名称。我目前没有使用 Employee。
在 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?
【问题讨论】:
标签: cocoa core-data nstableview