2010-02-12 13 views
25

¿Cómo obtengo el elemento seleccionado de un NSOutlineView utilizando mi propia fuente de datos? Veo que puedo obtener selectedRow pero devuelve una identificación de fila relativa al estado del esquema. La única forma de hacerlo es rastrear el estado de colapso expandido de los artículos, pero eso parece ridículo.¿Cómo obtener el elemento seleccionado de NSOutlineView sin usar NSTreeController?

que estaba esperando algo como:

array = [outlineViewOutlet selectedItems]; 

Miré las otras preguntas similares, ellos no parecen responder a la pregunta.

+0

En caso de que alguien se tropiece con esto y está tratando de encontrar una respuesta rápida, este es un puerto del siguiente código. 'println (MainOutlineList.itemAtRow (MainOutlineList.selectedRow))' – nsij22

Respuesta

67

NSOutlineView hereda de NSTableView, para que pueda obtener buenos métodos tales como: selectedRow

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

Muchas gracias que funciona como se esperaba. Desearía que fuera más fácil encontrarlo en los documentos de Apple ... –

+0

¡Genial! ¡y tan simple! – Colas

+0

Devuelve -1 para la fila seleccionada, ¿puede guiarme para perder algo? – Xander

0

@Dave De largos: excelente respuesta, aquí es la traducción a Swift 3,0

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

Se muestra una caso en que el elemento es de la clase FileSystemItem con una propiedad fileURL.

Cuestiones relacionadas