2010-02-12 41 views
25

如何使用我自己的数据源获取NSOutlineView的选定项目。 我看到我可以得到selectedRow,但它返回一个相对于大纲状态的行ID。唯一的办法是跟踪项目的展开状态,但这看起来很荒谬。如何在不使用NSTreeController的情况下获取NSOutlineView的选定项目?

我希望这样的事情:

array = [outlineViewOutlet selectedItems]; 

我看着其他类似的问题,他们不似乎回答这个问题。从NSTableView

+0

如果有人在这个问题上磕磕绊绊,并试图为swift找到答案,这是下面代码的一个端口。 'println(MainOutlineList.itemAtRow(MainOutlineList.selectedRow))' – nsij22 2015-04-28 20:30:39

回答

67

NSOutlineView继承,所以你得到很好的方法,如selectedRow

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

非常感谢您的工作。我希望在Apple文档中找到它更容易... – 2010-02-12 17:36:25

+0

太棒了!太简单了! – Colas 2013-08-27 15:15:17

+0

它为选定的行返回-1,你能指导我失去一些东西吗? – Xander 2013-12-09 09:07:18

0

@戴夫德龙:优秀的答案,这里是翻译雨燕3.0

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

显示的是一其中项目来自具有属性fileURL的FileSystemItem类。

相关问题