我正在使用NSTreeController来管理NSOutlineView的节点。当用户添加新项时,我创建一个新对象并插入它:
EntityViewEntityNode *newNode = [EntityViewEntityNode nodeWithName:@"New entity" entity:newObject];
// Insert at end of group
//
NSIndexPath *insertAt = [pathOfGroupNode indexPathByAddingIndex:[selected.children count]];
[entityCollectionTreeController insertObject:newNode atArrangedObjectIndexPath:insertAt];
现在,我想打开表列进行编辑,这样用户就可以命名新项目了。这似乎合乎逻辑:
NSInteger row = [entityCollectionOutlineView rowForItem:newNode];
[entityCollectionOutlineView editColumn:0 row:row withEvent:nil select:YES];
但是,row始终为-1,表示找不到该对象。查看一下就会发现,树控制器实际上并没有将我的对象直接放入树中,而是将它们包装在自己的节点对象中。
有没有人知道我将如何获得相对于大纲视图的行索引,这样我就可以做到这一点(希望不用枚举大纲视图中的所有内容并计算回节点的映射?)
发布于 2010-05-03 06:55:46
当您插入一个新节点时,它会自动在outline视图中被选中。这样您就可以通过使用...
NSInteger selectedRow = [entityCollectionOutlineView selectedRow];
https://stackoverflow.com/questions/2756360
复制相似问题