2009-02-06 75 views
22

我有一个NSOutlineView绑定到NSTreeController(如果这有所不同),并且我想扩展我的-awakeFromNib()中的每个节点。NSOutlineView - 自动扩展所有节点

我也想以编程方式同时选择第一个节点的第一个孩子。这些类型的事情对于表格视图来说很简单,但是轮廓根本不与我合作。

感谢,

丰富

回答

54

我想扩大每个节点在我-awakeFromNib()。

从Mac OS X 10.5起,[outlineView expandItem:nil expandChildren:YES]

在以前的Mac OS X版本中,您需要从0迭代到行数,使用[outlineView itemAtRow:row]获取每行的项目,并将这些项目存储到数组中,然后遍历数组并将每个项目项目到expandItem:expandChildren:方法。 (不能混合两个循环,因为展开项目及其所有后代将更改其后续兄弟的行索引;因此,必须先收集所有顶级项目,然后在完成所有项目后展开它们。 )

我也想以编程方式同时选择第一个节点的第一个孩子。

立即上面后,这将是第1行。

大纲视图是一种表视图,所以你会使用NSTableView的的方法之一:[outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO]

+0

完美,谢谢。 为什么传球无效?我试着用我想到的每一个对象来尝试这个消息...... – 2009-02-06 15:27:30

-2

如果你从一个数据源加载,

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.outlineView expandItem:root expandChildren:YES]; 
});