2011-06-21 30 views
5

我想在另一個類中以編程方式設置我的OutlineView的選擇。以編程方式設置NSOutlineView的選擇(並獲得NSTableView的選擇)

我可以通過[[appDelegate outlineViewController] outlineView]訪問NSOutlineView的實例。

這個想法背後,是我有一個項目列表(也在大綱視圖)的視圖,我希望用戶能夠點擊視圖中的項目,以便outlineviews的選擇已更改,因此會出現(所選項目的)新視圖。

那麼,如何以編程方式更改OutlineView的選擇?

如果問題看起來不清楚,請讓我知道我能做些什麼才能使它更容易理解。

回答

7

如果我正確理解你,我認爲你正在尋找NSOutlineView– selectRowIndexes:byExtendingSelection:方法。請注意,NSOutlineViewNSTableView的一個子類。

+0

當我們在NSOutlineView中使用樹時,它不起作用。使用3-4級深度樹時選擇任何方式進行選擇? –

2

對於我而言,
我有一個NSTableView從 「項目列表視圖」 下的項目,
OutlineView與此類似:

    • 不便
    • smth
    • smth
    • 。 。 。
  1. 父乙
    • 不便
    • 不便
    • 。 。 。
  2. 項目列表視圖
    • 物品1
    • ITEM2
    • 項目3

父A和B都並不重要,但他們在這裏展示,有在「項目列表視圖」之前不是固定數量的行。

所以,我做什麼,是我用我的NSTableView的代表,並在該方法中使用
NSTableView *tableView = [aNotification object];
NSInteger clickedRowInTableView = [tableView selectedRow];

- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
方法來獲取新的選定行中我tableView

之後,我得到了「項目列表視圖」的行號(它動態獲取它,這取決於「父母」是否展開,以及他們有多少個孩子),還展開了「項目列表視圖「,如果它還沒有擴大。

接下來,我將所有數字加在一起:clickedRowInTableView + rowNrOfItemsListView + 1,1爲「Items list view」行。

然後我用NSOutlineView– selectRowIndexes:byExtendingSelection:(謝謝你Nate指出來),在OutlineView中設置選定的行。

我希望這對我和那些處境相同的人有一些幫助。

+0

我很高興你找到了解決方案!如果您覺得您的問題已經完全解決,您應該將您的答案或我的答案標記爲已接受的答案,以便未來的觀衆知道此問題已解決。 :) –

相關問題