2009-02-06 76 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]; 
});