2010-02-12 73 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類。

相關問題