установить выбор NSOutlineView программно (и получить выбор NSTableView) - PullRequest
5 голосов
/ 21 июня 2011

Я хочу установить выбор моего OutlineView программно в другом классе.

Я могу получить доступ к экземпляру NSOutlineView по [[appDelegate outlineViewController] outlineView].

Идеяза этим стоит то, что у меня есть представление со списком элементов (которые также есть в outlineview ), и я хочу, чтобы пользователь мог щелкнуть по элементу в представлении, чтобы outlineviews выбор изменяется, и, таким образом, появляется новый вид (выбранного элемента).

Итак, еще раз, Как я могу изменить выбор OutlineView программно?

Если вопрос выглядит неясным, пожалуйста, дайте мне знать, что я могу сделать, чтобы сделать его более понятным.

Ответы [ 2 ]

7 голосов
/ 21 июня 2011

Если я правильно вас понимаю, я думаю, вы ищете метод NSOutlineView – selectRowIndexes:byExtendingSelection:.Обратите внимание, что NSOutlineView является подклассом NSTableView.

2 голосов
/ 22 июня 2011

Для моего случая
У меня был NSTableView с предметами из-под «Представления списка предметов»,
и OutlineView похож на это:

  1. Родитель А
    • что-то
    • что-то
    • что-то
    • . , .
  2. Родитель B
    • что-то
    • что-то
    • . , .
  3. Список предметов
    • item1
    • item2
    • item3

Родители A и B не важны, но они здесь, чтобы продемонстрировать, что перед «представлением списка элементов» не существует фиксированного числа строк.

Итак, что я сделал, так это то, что использовал
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
метод в моем делегате NSTableView и метод
NSTableView *tableView = [aNotification object];
NSInteger clickedRowInTableView = [tableView selectedRow];
чтобы получить новую выбранную строку в моем tableView.

После этого я получил номер строки «Представление списка элементов» (он получает его динамически, в зависимости от того, расширены ли «Родители» и сколько у них детей), а также развернул «Представление списка элементов» , если он еще не был расширен.

Затем я добавил все числа вместе: clickedRowInTableView + rowNrOfItemsListView + 1, 1 для строки «Просмотр списка элементов».

Затем я использовал NSOutlineView – selectRowIndexes:byExtendingSelection: (спасибо, Нейт, за указание на это), чтобы установить выбранную строку в OutlineView.

Надеюсь, это может помочь тем, кто находится в той же ситуации, что и я.

...