addChild等使用NSTreeController和NSTreeNode(雪豹)

时间:2010-05-31 00:04:29

标签: osx-snow-leopard nstreecontroller

我有一个设置,其中一个对象(OTNodeDatum)(对于OutlineTest的OT)是NSTreeNode中表示的对象。 NSTreeNode是NSTreeController的属性页面中显示的类。

我有基于文档的应用,没有核心数据。在MyDocument init上,我使用包含一个项目的NSMutableArray设置内容,NSTreeNode包含一个包含单个属性的表示对象(是,名称)。

添加按钮,添加子按钮,删除按钮,通过界面构建​​器连接到NSTreeController添加操作等。

它可以解决问题。

当我进行添加时,我得到一个新的空行我可以编辑,但是当我离开单元格时,插入的文本会消失。

当我删除时,事情会被删除。

当我添加孩子时,没有任何事情发生。

我认为我必须继承NSTreeNode或NSTreeController,以便在添加子节点和添加新的表示对象方面获得正确的行为,并添加新的树节点。

这是正确的吗?如果我继承NSTreeController,我会覆盖add addChild,以便做正确的事情吗?还有什么我搞砸了?我似乎无法找到任何指导,虽然我花了很长时间看。

感谢。

John V

1 个答案:

答案 0 :(得分:2)

看来,正确的做事方式,或者至少是一种方式,是使用

-(void)insertObject:(id)object atArrangedOjectIndexPath:(int)index;

首先创建representedObject,使用该代表对象创建一个新的NSTreeNode,然后插入它。比简单地将添加按钮连接到树控制器更多的工作,但(希望)使用NSTreeNode的优势弥补了它。