¿Cómo se obtiene la fila de un botón en una tabla basada en vista al hacer clic en el botón? La fila no se selecciona cuando se hace clic en el botón, pero descubrí que si registra sender.superview.superview en el método de acción del botón, obtengo: NSTableRowView: 0x1001b3a90 - row: 2. Entonces, la fila está allí en el registro, pero no sé cómo hacerlo programáticamente. Tengo el método de acción del botón en una subclase de NSTableCellView.Obtener la fila del botón en la tabla basada en la vista
Respuesta
-[NSTableView rowForView:]
dice esto en su documentación:
Esto normalmente se necesita en el método de acción para una NSButton (o NSControl) para averiguar qué fila (y la columna) la acción se debe realizar en.
Aquí les doy un ejemplo simple. En esto estoy agregando un UIButton en la vista de contenido. Cuando hace clic en el botón que llama a un método y no consigo el número de filas y llamo como yo requería
//Adding a button
UIButton *btnBuyer=[UIButton buttonWithType:UIButtonTypeCustom];
btnBuyer.frame=CGRectMake(238, 10, 26, 32);
btnBuyer.tag=indexPath.row;
[btnBuyer setImage:[UIImage imageNamed:@"buyIcon.png"] forState:UIControlStateNormal];
[btnBuyer addTarget:self action:@selector(goBuyTab:)forControlEvents:UIControlEventTouchUpInside];
[cellNew.contentView addSubview:btnBuyer];
Y cuando el usuario haga clic en este llegué ID desde el siguiente método
-(void)goBuyTab:(UIButton *)sender{
NSLog(@"after click buy button function called goBuyTab");
NSLog(@"sender.tag in goBuyTab : %d",sender.tag);
int selectedRow=sender.tag;// This is row number
}
Hope esto es lo que requieres
en OSX puede utilizar esto en su método de acción pila de botón en el controlador:
- (IBAction)yourMethod:(NSButtonCell *)sender {
NSInteger selected = [yourTableView selectedRow];
NSLog(@"sender sends :%ld", selected);
}
debe configurar una salida desde el controlador a la NSTableView
.
Esto no siempre funciona porque es perfectamente posible hacer clic en un botón en una fila sin seleccionar la fila subyacente. – Ely
Tampoco funciona porque (en una vista de tabla basada en celdas) 'sender' es' NSTableView', no 'NSButtonCell'. –
que comparten el código de Swift 4.
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
........
but.action = #selector(ViewController.buttonAction)
.........
}
@objc func buttonAction(but: NSButton){
let tablerow: NSTableRowView = but.superview?.superview as! NSTableRowView;
let index = table?.row(for: tablerow);
print("\(index));
}
- 1. Jqgrid: navegación basada en la fila seleccionada
- 2. Excel VBA: obtener la fila del botón presionado
- 3. obtener una sola fila de la tabla
- 4. cómo eliminar la fila de la tabla en el diseño de la tabla en android
- 5. Filtrado + animación NSTableView basada en la vista
- 6. Desplácese inmediatamente a la fila en la tabla antes de ver la vista
- 7. ¿Cómo obtener la fila de la tabla de arriba (o antes) mi fila actual en jQuery?
- 8. Cómo obtener la última fila de la tabla usando JOIN
- 9. Varias columnas en la vista de tabla
- 10. ¿Cómo eliminar la fila actual de la tabla en jQuery?
- 11. Tabla HTML con botón en cada fila
- 12. Jquery Reemplazar la fila de la tabla en JQuery
- 13. Habilitación del modo de edición para una sola fila en la vista de tabla
- 14. Qt - QTableView - Botón que hace clic en la fila de la tabla
- 15. fila de la tabla clon
- 16. ¿Vincular toda la fila de la tabla?
- 17. Botón de AirPlay en la vista personalizada
- 18. vista indizada vs Índices en la Tabla
- 19. Modificar la vista basada en ACL en CakePHP
- 20. Configuración del ancho de columna en la Vista de tabla
- 21. ¿Cómo obtener la fila y la columna del índice?
- 22. Cómo habilitar la retroalimentación háptica en la vista de botón
- 23. Seleccione la fila de la tabla en jQuery
- 24. ¿Cómo mover la fila de la tabla en jQuery?
- 25. jQuery cada bucle en la fila de la tabla
- 26. ¿Eliminar la fila de la lista eliminar fila de la tabla base - MYsql?
- 27. Anulando la selección de la fila de la vista de tabla al devolver
- 28. ¿Cómo obtener la vista de un elemento en la vista de lista en Android?
- 29. jQuery Fila de la tabla clon
- 30. Ocultar o desactivar el botón Atrás en la vista final de la aplicación basada en el controlador de navegación
Gracias, esto es lo que necesitaba. Puedo obtener la vista de tabla en el método de acción del botón desde sender.superview.superview.superview y la vista desde sender.superview – rdelmar
La acción debe enviarse a un controlador y ese controlador debe conocer la vista de tabla. Debería tener una salida. Por lo tanto, no debería necesitar seguir la cadena de superview. Y, simplemente puede pasar 'sender' como argumento a' -rowForView: ', ya que busca la fila que contiene, directa o indirectamente, la vista. –
Estaba haciendo algunas pruebas solo para ver cómo podía manipular varios elementos de IU en una tabla basada en vistas, así que inicialmente, tenía el método de acción en el delegado de la aplicación (por simplicidad) y nunca se llamó. Luego lo puse en la vista de celda de la tabla personalizada porque leí en alguna parte que ahí es donde debería estar. Como dijiste en tu comentario, realmente parece que debería estar en un objeto controlador, pero ¿hay alguna restricción sobre dónde puede ir para que funcione? ¿Por qué no funcionó en el delegado de la aplicación? No estoy seguro de cómo se ve la cadena de respuesta para una tabla basada en vista. – rdelmar