2010-02-12 3 views
25

내 데이터 소스를 사용하여 NSOutlineView에서 선택한 항목을 가져 오는 방법. 나는 selectedRow를 얻을 수 있지만 윤곽선의 상태를 기준으로 행 ID를 반환합니다. 이를 수행하는 유일한 방법은 항목의 확장 된 접힌 상태를 추적하는 것입니다.하지만 그것은 어리석은 것처럼 보입니다.NSTreeController를 사용하지 않고 NSOutlineView의 항목을 선택하는 방법은 무엇입니까?

내가 좋아하는 뭔가를 기대했다 :

나는 다른 유사한 질문 보았다
array = [outlineViewOutlet selectedItems]; 

, 그들은 질문에 대답하는 것 같다니까. NSTableView에서

+0

누구나이 문제가 발생하여 신속한 답변을 찾으려고하는 경우 아래 코드의 포트입니다. 'println (MainOutlineList.itemAtRow (MainOutlineList.selectedRow))' – nsij22

답변

67

NSOutlineView 상속, 당신은 selectedRow 같은 좋은 방법 얻을 수 있도록 :

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

고맙습니다. 의도 한대로 작동합니다. Apple docs에서 쉽게 찾을 수 있었으면 좋겠습니다. –

+0

대단히! 너무 간단! – Colas

+0

선택한 행에 대해 -1을 반환합니다. 누락 된 부분을 안내 할 수 있습니까? – Xander

0

@ 데이브 드 롱 : 훌륭한 답을 여기에 표시된 스위프트 3.0

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

로 번역이된다 item이 FileURL 속성의 클래스 FileSystemItem에있는 경우입니다.