NSOutlineView - 自动扩展所有节点

时间:2009-02-06 10:04:29

标签: cocoa nsoutlineview

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

我还想以编程方式同时选择第一个节点的第一个子节点。这些类似于桌面视图的东西很简单,但大纲根本不与我合作。

谢谢,

2 个答案:

答案 0 :(得分:64)

  

我想扩展我的-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]

答案 1 :(得分:-2)

如果您要从数据源加载

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