NSButton en NSTableCellView: ¿Cómo encontrar el objectValue deseado?
-
27-10-2019 - |
Pregunta
Tengo un NSTableView basado en vistas que se completa mediante enlaces.Mis textFields e imageViews están vinculados a las propiedades de objectValue de NSTableCellView.
Si quiero tener un botón de edición / información en mi NSTableCellView:
-
¿Quién debería ser el objetivo de la acción del botón?
-
¿Cómo obtendría el objetivo el objectValue asociado con la celda en la que se encuentra el botón?
En última instancia, me gustaría mostrar una ventana emergente / hoja basada en objectValue.
Solución
Su clase de controlador puede ser el objetivo.Para obtener el valor del objeto:
- (IBAction)showPopover:(id)sender {
NSButton *button = (NSButton *)sender;
id representedObject = [(NSTableCellView *)[button superview] objectValue];
}
O utilice una subclase de NSTableCellView
, haga que la celda vea el objetivo de la acción del botón y llame a [self objectValue]
para obtener el objeto.
Otros consejos
Encontré una respuesta adicional: la respuesta anterior parece suponer que estás usando enlaces en tu vista de tabla.Como soy una especie de novato, encontré una manera de colocar el botón dentro de la celda de la vista de tabla.
- (IBAction)getCellButton:(id)sender {
int row = [xmlTable rowForView:sender];
}
De esta manera, cuando hace clic en el botón dentro de la fila, no tiene que tener la fila seleccionada.Devolverá el valor int de la fila para que coincida con una fuente de datos en una matriz sin enlaces.