2011-06-21 10 views
5

Chcę ustawić programowo mój wybór OutlineView w innej klasie.ustawianie wyboru NSOutlineView programowo (i uzyskać wybór NSTableView)

Jestem w stanie uzyskać dostęp do instancji NSOutlineView przez [[appDelegate outlineViewController] outlineView].

Ideą tego jest to, że mam widok z listą pozycji (które są również w konspektem) i chcę, aby użytkownik mógł kliknąć element w widoku, aby zarysy konturu wybór zostanie zmieniony i pojawi się nowy widok (wybranego elementu).

Ponownie, Jak mogę programowo zmienić wybór OutlineView?

Jeśli pytanie nie jest jasne, proszę dać mi znać, co mogę zrobić, aby było bardziej zrozumiałe.

Odpowiedz

7

Jeśli dobrze cię rozumiem, to myślę, że szukasz metody NSOutlineView 's – selectRowIndexes:byExtendingSelection:. Zauważ, że NSOutlineView jest podklasą NSTableView.

+0

Nie działa, gdy używamy drzewa w widoku NSOutlineView. Jakikolwiek sposób dokonać selekcji przy użyciu drzewa o głębokości 3-4? –

2

Na moim przypadku
Miałam NSTableView z elementów spod "Elementy widoku listy",
i OutlineView podobny do tego:

  1. nadrzędna
    • smth
    • smth
    • smth
    • . . .
  2. nadrzędna B
    • SMTH
    • SMTH
    • . . .
  3. Pozycje listy zobacz
    • item1
    • ITEM2
    • ITEM3

nadrzędna A i B nie są ważne, ale są one tutaj, aby wykazać, że istnieje nie jest ustaloną liczbą linii przed "widokiem listy artykułów".

Więc, co zrobiłem, było to, że stosowane metody
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
w delegata moi NSTableView „s oraz w stosowaniu metody
NSTableView *tableView = [aNotification object];
NSInteger clickedRowInTableView = [tableView selectedRow];
dostać nowy wybrany wiersz w moim tableView.

Po tym otrzymałem numer wiersza "Widok listy artykułów" (dynamicznie pobiera go, w zależności od tego, czy "Rodzice" są rozszerzone, czy nie, i ile dzieci mają), a także rozszerzył "Widok listy przedmiotów" ", jeśli nie był jeszcze rozwinięty.

Następnie dodałem wszystkie liczby razem: clickedRowInTableView + rowNrOfItemsListView + 1, 1 dla wiersza "Widok listy elementów".

Następnie użyłem NSOutlineView 's (dziękuję Nate za wskazanie), aby ustawić wybrany wiersz w OutlineView.

Mam nadzieję, że może to być pomocne dla osób znajdujących się w takiej samej sytuacji jak ja.

+0

Cieszę się, że znalazłeś rozwiązanie! Jeśli uważasz, że Twój problem został w pełni rozwiązany, zaznacz swoją odpowiedź lub moją jako zaakceptowaną odpowiedź, aby przyszli widzowie wiedzieli, że to pytanie zostało rozwiązane. :) –