gpt4 book ai didi

objective-c - NSTreeController add 和 addChild 方法

转载 作者:行者123 更新时间:2023-12-03 17:27:35 24 4
gpt4 key购买 nike

转到更新

我有一个NSTreeController将( Content Object )绑定(bind)到我的应用程序委托(delegate)的内容( NSTreeNode * )的 Controller 。我还有NSOutlineView在绑定(bind)到我的 Controller 的窗口中。

一切正常,内容显示在大纲 View 中,但我不能add ( addChildinsert 等)通过 Controller 方法和 canAdd 的任何项目( canAddChild 等) Controller 的方法总是返回 NO (我有一个“启用”按钮绑定(bind)到 Controller ,并且该按钮被禁用)。

我的错误在哪里?

更新

我想提供一些有关我的情况的更多信息。

我有一个 MyNode 类:

@interface MyNode : NSTreeNode {
NSString* title;
}

@property (retain) NSString* title;


@end

我的 nib 文件中也有 NSTreeController 对象。 childrenKeyPath设置为childNodes在IB和countKeyPathisLeafKeyPath都是空的。

Controller 模式设置为Class类名称为 MyNode .

内容对象(不是内容数组)绑定(bind)到MyDocument rootNode属性:

@property (readonly) MyNode* rootNode;

...

rootNode = [[MyNode alloc] init];
rootNode.title = @"Root";

MyNode *childNode = [[MyNode alloc] init];
childNode.title = @"Child";

[[rootNode mutableChildNodes] addObject:childNode];

我的窗口中有 NSOUlineView content绑定(bind)到 TreeController 的 arrangedObjects 。显示内容。我什至可以编辑节点的标题,但无法通过 TreeController 添加或插入任何(子)节点。

我有 2 个按钮:“添加子项”和“插入子项”连接到 addChildinsertChild TreeController 的操作并启用绑定(bind)到 canAddChildcanInsertChild TreeController 的属性。按钮被禁用......并且我无法添加或插入任何子节点。

哪里出错了?

更新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];

并将内容数组(不是内容对象)绑定(bind)到MyDocument.rootNodes属性(property)和一切工作正常。

为什么 addXXX 方法不适用于单个对象?我在文档中找不到任何有关它的信息...

以及为什么TreeController可以将根元素添加到rootNodes中? rootNodesNSArray ,而不是 NSMutableArray .

最佳答案

我想我已经明白了!尝试将 childrenKeyPath 设置为 mutableChildNodes

关于objective-c - NSTreeController add 和 addChild 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com