我有一个非常简单的应用程序。它是一个非基于文档的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是选择,Model Key Path是:name
当我运行应用程序时,我可以创建新实体并更改实体的值。一切正常。
表中的选择是什么不起作用。更改表中的选定行不会导致在NSArrayController中选择该行的值。我理解我可以在表上放一个委托来捕获SelectionDidChange并在ArrayController上显式设置选择,但我想知道是否有更简单的方法来做到这一点。
我见过其他有两个表视图的示例,表示一对多的关系。第一个表中的选择导致第二个表显示从属实体。 (例如,选择一个部门会显示该部门的员工)。在我看的例子中,似乎没有NSTableDelegate。
我错过了什么? NSTableView如何将其选择传递回NSArrayController?
答案 0 :(得分:1)
你是如何设置绑定的?如果您将NSTableView
的内容绑定到NSArrayController
,则必须绑定selection
&amp; sortDescriptions
也是如此。
作为替代方法,您可以将表列的Value
绑定绑定到Array Controller.arrangedObjects
,并且选择应该有效。