我有一个绑定到 NSTreeController
的 NSOutlineView
(如果这有区别的话),我想在我的 -awakeFromNib()
中展开每个节点。
同时,我还想编程选择第一个节点的第一个子节点。这些在表格视图中很简单,但大纲视图完全不配合我。
谢谢,
Rich
我有一个绑定到 NSTreeController
的 NSOutlineView
(如果这有区别的话),我想在我的 -awakeFromNib()
中展开每个节点。
同时,我还想编程选择第一个节点的第一个子节点。这些在表格视图中很简单,但大纲视图完全不配合我。
谢谢,
Rich
我想要在-awakeFromNib()方法中展开所有节点。
从Mac OS X 10.5开始,可以使用[outlineView expandItem:nil expandChildren:YES]
方法展开所有节点。
在之前的Mac OS X版本中,您需要从0到行数之间进行迭代,使用[outlineView itemAtRow:row]
方法获取每一行的项,并将这些项存储到数组中,然后迭代数组并将每个项传递给expandItem:expandChildren:
方法。(您不能混合使用两个循环,因为展开一个项目及其所有后代会更改其后续兄弟的行索引; 因此,您必须先收集所有顶级项,然后才能展开它们。)
我还想在同一时间编程选择第一个节点的第一个子项。
在上面的操作完成后,此时该子项将位于第二行。
大纲视图是表格视图的一种,因此您可以使用NSTableView的一个方法:[outlineView selectRowIndexes:[NSIndexSet indexSetWithIndex:1] byExtendingSelection:NO]
来选择第一个子项。
如果你正在从数据源加载,
dispatch_async(dispatch_get_main_queue(), ^{
[self.outlineView expandItem:root expandChildren:YES];
});