Как получить цель Control Click в NSOutlineView - PullRequest
1 голос
/ 31 октября 2011

У меня есть NSOutlineView, контролируемый NSTreeController. NSOutlineView подключен к контекстному меню в Интерфейсном Разработчике.

Control Click вызывает мое меню, и строка, по которой щелкают, «выделяется» с бледной подсветкой с рамкой.

Кажется, я не могу найти способ определить, какая строка "выбрана". selectionIndexPath и selectedObjects равны нулю.

1 Ответ

3 голосов
/ 23 января 2012

Вы хотите использовать clickedRow.Обратите внимание, что это становится немного сложнее, если вы поддерживаете множественный выбор, потому что выбор выбирается с помощью контекстного меню, если строка, по которой щелкнули, находится внутри него, тогда как, если вы щелкаете в другом месте, строка (одиночная), по которой щелкают, является целью, а выбор -игнорируется.

Вот пример кода, который я написал для обработки этого:

- (NSArray *)selectedURLs;
{
    NSInteger clickedRow = [outlineView clickedRow];
    NSArray *selectedObjects;

    if (clickedRow == -1 || [[outlineView selectedRowIndexes] containsIndex:clickedRow])
        selectedObjects = [treeController selectedObjects];
    else
        selectedObjects = [NSArray arrayWithObject:[[outlineView itemAtRow:clickedRow] representedObject]];

    return [selectedObjects valueForKey:SSTreeNodeAttributes.fileReferenceURL];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...