Подтвердить что ты не робот

Как получить выбранный элемент NSOutlineView без использования NSTreeController?

Как получить выбранный элемент NSOutlineView с использованием моего собственного источника данных. Я вижу, что я могу выбрать selectRow, но он возвращает идентификатор строки относительно состояния контура. Единственный способ сделать это - отследить расширенное сложенное состояние элементов, но это кажется смешным.

Я надеялся на что-то вроде:

array = [outlineViewOutlet selectedItems];

Я посмотрел на другие подобные вопросы, они, похоже, не отвечают на вопрос.

4b9b3361

Ответ 1

NSOutlineView наследует от NSTableView, поэтому вы получаете хорошие методы, такие как selectedRow:

id selectedItem = [outlineView itemAtRow:[outlineView selectedRow]];

Ответ 2

@Dave De Long: отличный ответ, вот перевод на Swift 3.0

   @objc private func onItemClicked() {
    if let item = outlineView.item(atRow: outlineView.clickedRow) as? FileSystemItem {
        print("selected item url: \(item.fileURL)")
    }
}

Показан случай, когда элемент из класса FileSystemItem имеет свойство fileURL.