我有一个NSOutlineView
绑定到NSTreeController
(如果这有所不同),我想扩展-awakeFromNib()
中的每个节点。
我还想以编程方式同时选择第一个节点的第一个子节点。这些类似于桌面视图的东西很简单,但大纲根本不与我合作。
谢谢,
富
答案 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];
});