0

我有一个非常简单的应用程序。它是一个基于非文档的 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?

4

1 回答 1

1

你是如何设置绑定的?如果将NSTableView的内容绑定到NSArrayController,则还必须绑定selection& sortDescriptions

作为替代方案,您可以将表列的Value绑定绑定到Array Controller.arrangedObjects,并且选择应该可以工作。

于 2012-07-10T14:35:28.873 回答