转到更新
我有一个NSTreeController
控制器,将 ( Content Object
) 绑定到我的应用程序委托的内容 ( NSTreeNode *
)。我NSOutlineView
的窗口中也有绑定到我的控制器。
一切正常,内容显示在大纲视图中,但我不能add
(addChild
等insert
)任何项目,尽管控制器方法和canAdd
(canAddChild
等)控制器方法总是返回NO
(我有一个“启用”的按钮绑定到控制器和这个按钮被禁用)。
我的错误在哪里?
更新
我想提供更多关于我的情况的信息。
我有一个 MyNode 类:
@interface MyNode : NSTreeNode {
NSString* title;
}
@property (retain) NSString* title;
@end
我的 nib 文件中也有 NSTreeController 对象。在IBchildrenKeyPath
中设置为和为空。childNodes
countKeyPath
isLeafKeyPath
控制器模式设置为Class
,类名称为MyNode
。
内容对象(不是内容数组)绑定到MyDocument
srootNode
属性:
@property (readonly) MyNode* rootNode;
...
rootNode = [[MyNode alloc] init];
rootNode.title = @"Root";
MyNode *childNode = [[MyNode alloc] init];
childNode.title = @"Child";
[[rootNode mutableChildNodes] addObject:childNode];
我的窗口中有 NSoulineViewcontent
绑定到 TreeController 的arrangedObjects
. 显示内容。我什至可以编辑节点的标题,但无法通过 TreeController 添加或插入任何(子)节点。
我有 2 个按钮:“添加子项”和“插入子项”连接到 TreeController 的addChild
和insertChild
操作,并启用绑定到 TreeController 的canAddChild
和canInsertChild
属性。按钮被禁用..我无法添加或插入任何子节点。
错在哪里?
更新 2
我有一些好消息 =)
我像这样更改了我的 Document 类:
@interface MyDocument : NSDocument {
NSMutableArray *rootNodes;
MyNode* rootNode;
}
@property (readonly) NSArray* rootNodes;
..
rootNodes = [[NSMutableArray alloc] init];
rootNode = [[MyNode alloc] init];
rootNode.title = @"Root";
MyNode* childNode = [[MyNode alloc] init];
childNode.title = @"Child";
[[rootNode mutableChildNodes] addObject:childNode];
[rootNodes addObject:rootNode];
并将内容数组(不是内容对象)绑定到MyDocument.rootNodes
属性,一切正常。
为什么 addXXX 方法不适用于单个对象?我在文档中找不到任何关于它的信息......
为什么 TreeController 可以将根元素添加到rootNodes
? rootNodes
是NSArray
,不是NSMutableArray
。