【发布时间】:2010-10-05 21:45:38
【问题描述】:
我有一个NSOutlineView 绑定到一个NSTreeController(如果有区别的话),我想扩展我的-awakeFromNib() 中的每个节点。
我还想同时以编程方式选择第一个节点的第一个子节点。这些事情对于表格视图来说很简单,但大纲根本不适合我。
谢谢,
丰富
【问题讨论】:
标签: cocoa nsoutlineview
我有一个NSOutlineView 绑定到一个NSTreeController(如果有区别的话),我想扩展我的-awakeFromNib() 中的每个节点。
我还想同时以编程方式选择第一个节点的第一个子节点。这些事情对于表格视图来说很简单,但大纲根本不适合我。
谢谢,
丰富
【问题讨论】:
标签: cocoa nsoutlineview
我想扩展我的 -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]。
【讨论】:
如果您从数据源加载,
dispatch_async(dispatch_get_main_queue(), ^{
[self.outlineView expandItem:root expandChildren:YES];
});
【讨论】: