¿Cómo mantengo un NSPathControl actualizado con la ruta de la celda seleccionada en un NSBrowser?

votos
5

Necesito mantener un NSPathControl actualizado con la ruta actualmente seleccionada en un NSBrowser, pero estoy teniendo problemas para encontrar una forma de recibir notificaciones cuando la ruta ha cambiado desde NSBrowser. La forma ideal de hacer esto sería observar la ruta de acceso de la clave de acceso en NSBrowser, pero eso le da a un KVO solo puede observar los <key>métodos establecidos que devuelven el mensaje vacío y sin actualizaciones (setPath devuelve un valor de éxito bool).

También intenté observar la ruta de la clave selectedCell, pero no recibiré notificaciones cuando la selección haya sido modificada.

¿Hay alguna otra manera realmente obvia de hacer esto que me estoy perdiendo?

Publicado el 10/12/2008 a las 00:47
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
7

Cortesía de Rob Keniger en Cocoa Dev :

¿Has mirado el ejemplo de SimpleBrowser en / Developer / Examples? Muestra cómo obtener la selección actual cuando el usuario la cambia, básicamente con solo configurar la acción de NSBrowser.

Esa es de hecho la manera de hacerlo. Simplemente implemente un método - (void) broswerClicked: (incluido el mapeo en el constructor de interfaces) con lo que quiera que suceda cada vez que la selección cambie dentro de ese método, por ejemplo

- (void)browserClicked:(id)browser {
    self.pathToSelectedCell = [browser path]; // NSPathControl is bound to pathToSelectedCell
}
Respondida el 10/12/2008 a las 04:28
fuente por usuario

votos
0

A partir de 10,6, se puede averiguar qué elementos están seleccionados, mediante el uso de la devolución de llamada delegado de la siguiente manera:

- (NSIndexSet *)browser:(NSBrowser *)browser selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes inColumn:(NSInteger)column
{
    NSLog(@"New first item of the new selection is at index %@", [proposedSelectionIndexes firstIndex]);
    // Do something with the selected index or indicies
    return proposedSelectionIndexes; // Allow the selection to occur by not changing this
}
Respondida el 06/03/2013 a las 19:43
fuente por usuario

votos
0

Acabo de registrar IB, y parece que NSBrowser tiene un enlace de rutas de índice de selección (una matriz de objetos NSIndexPath) que posiblemente podría supervisar con KVO. Es extraño, pero no veo ninguna mención de ello en los documentos, por lo que podría necesitar investigar un poco para ver si eso es algo que debería o no debería usar, incluso si parece funcionar. Si lo hace, en su método de observación KVO encontrará la ruta actual del navegador y la convertirá en un NSURL que el control de ruta puede usar.

Si eso no funciona, también están los métodos de delegado - (BOOL)browser:(NSBrowser *)sender selectRow:(NSInteger)row inColumn:(NSInteger)columny - (BOOL)browser:(NSBrowser *)sender selectCellWithString:(NSString *)title inColumn:(NSInteger)column.

Respondida el 10/12/2008 a las 01:03
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more