Necesito mi aplicación para abrir una ventana cuando un usuario hace doble clic en una fila en un NSTableView
. Estoy teniendo dificultades para encontrar información o ejemplos sobre cómo lograr esto. ¿Alguien puede señalarme en la dirección correcta?Haga doble clic en una fila NSTableView en Cocoa?
Respuesta
Eche un vistazo al método -setDoubleAction:
en NSTableView; puede configurarlo para un método que se llamará igual que el sistema de acción de destino normal, pero haciendo doble clic. En este método de acción, -clickedRow
será útil.
Agregando más información básica a @JimPuls respuesta para el beneficio de otros recién llegados a Cocoa.
- Se debe declarar una IBOutlet a NSTableView en una interfaz. Supuse que es preferible hacerlo en el delegado de la mesa.
- El IBOutlet de la tabla debe conectarse a través de Interface Builder. Para hacer eso Ctrl-Drag & Suelta IB de la clase que declara el punto de venta a la vista de tabla. Cuando suelte el mouse, aparecerá una ventana emergente con el nombre del outlet que declaró en el paso # 1. Seleccione eso.
- En la sección @implementation, en el método -awakeFromNib, llame -setTarget: y -setDoubleAction: en el IBOutlet declarado en el paso n. ° 1 y conectado en el paso n. ° 2.
Aquí hay un extracto de mi delegado de vista de tabla. Mi delegado también se configuró como fuente de datos, por eso verá las interfaces NSTableViewDelegate y NSTabeViewDataSource asociadas.
// Extracto de la interfaz.
@interface MyTableViewDelegate : NSObject <NSTableViewDelegate, NSTableViewDataSource>
{
// This iVar needs to be connected to the table view via the IB.
IBOutlet NSTableView *tableOutlet;
}
@property (assign) IBOutlet NSTableView *tableOutlet;
- (void)doubleClick:(id)nid;
@end
// Implementation excerpt.
@implementation MyTableViewDelegate
@synthesize tableOutlet = _tableOutlet;
- (void)awakeFromNib {
[_tableOutlet setTarget:self];
[_tableOutlet setDoubleAction:@selector(doubleClick:)];
}
- (void)doubleClick:(id)object {
// This gets called after following steps 1-3.
NSInteger rowNumber = [_tableOutlet clickedRow];
// Do something...
}
Espero que esto ayude.
Usted puede hacer lo mismo con las fijaciones, en primer lugar declarar una mentod en el archivo .h
-(IBAction)openWindow:(id)sender
en el archivo .m implementar la misma
-(IBAction)openWindow:(id)sender
{
//do something here;
}
que tiene que plumín donde su la vista de tabla está presente, seleccione la vista de tabla y obtuvo la segunda última pestaña del inspector de atributos, abra el argumento de doble ciclista abreviatura triángulo compruebe el enlace para verificar el propietario del archivo de selección de zorro, la clave de modelo pat debe ser "propia", el nombre del selector será "abrirWindow: ", el mismo proceso lo hago con el descubrimiento" Double click target " re, Esto funcionará
Como dijo PR Singh, puede usar enlaces de cacao, también puede pasar los objetos seleccionados.
Seleccione su Tabla de IB a continuación en enlaces inspector de establecer estos dos enlaces de la siguiente manera:
>Double Click Target bind to = Application delegate object (or file owner) model key path = self selector name = myMethod: >Double Click Argument bind to = array controller controller key = selectedObjects selector name = myMethod:
Dónde myMethod se implementa como
- (void)myMethod:(NSArray*)selectedObjects
{
NSLog(@"%@", selectedObjects);
}
Ésta es también documentado aquí: https://developer.apple.com/library/mac/qa/qa1472/_index.html
Funcionó como un amuleto. – groomsy
Si alguien busca una versión 2.0 rápida: Esto es lo que funciona para mí. Parece mucho más fácil que el código Objective C.
@IBOutlet weak var searchResultTable: NSTableView!
override func viewDidLoad() {
super.viewDidLoad()
searchResultTable.doubleAction = "doubleClickOnResultRow"
}
func doubleClickOnResultRow()
{
print("doubleClickOnResultRow \(searchResultTable.clickedRow)")
}
Esto es realmente útil. Para aquellos que quieran saber más sobre 'doubleAction', revisen este [enlace] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTableView_Class/index.html#//apple_ref/occ/instp/NSTableView/doubleAction). –
Para Swift 3, el selector de función sería 'searchResultTable.doubleAction = #selector (doubleClickOnResultRow)' –
Puede conectar la acción de doble clic en Interface Builder. Haga clic y mantenga presionada la vista de tabla (asegúrese de obtener la vista de tabla , no la vista de desplazamiento o la vista de clip o una columna de tabla) para obtener su panel de conexiones. Encuentre el elemento "doubleAction" en la sección "Acciones enviadas". Conéctelo a IBAcción de su elección.
Easy squeezy lemon peasy. Puede hacer clic en la fila desde el método clickedRow de la vista de tabla. Aún necesita la toma descrita en la respuesta número dos. –
No necesita necesariamente una toma de corriente conectada a la vista de tabla, porque la vista de tabla se proporciona como el argumento emisor del mensaje de acción. –
Ojalá hubiera visto esto antes de cavar en mi propio reconocedor de gestos ... – ghostatron
- 1. Haga doble clic en la fila DataGridView?
- 2. ASP.Net haga doble clic en el problema
- 3. WPF ListBoxItem haga doble clic en?
- 4. Javafx 2 haga clic y haga doble clic
- 5. Colorear una fila en un NSTableView
- 6. MvvmLight EventToCommand y WPFToolkit DataGrid haga doble clic en
- 7. Dirigiendo eventos del mouse [DllImport ("user32.dll")] haga clic en, haga doble clic en
- 8. jQuery DataTable Móvil desde una fila, haga clic en
- 9. Animación jQuery: Ignorar haga doble clic
- 10. Animar una fila en un NSTableView
- 11. Seleccionar una fila en un NSTableView Programmatically
- 12. Cocoa: haga clic con el botón secundario en NSStatusItem
- 13. .NET: haga doble clic en evento en TabControl
- 14. Pestaña de Eclipse haga doble clic en Visual Studio?
- 15. haga doble clic y seleccione la ruta (incluyendo '/') en Terminal.app
- 16. jqGrid Edición de celdas: haga doble clic para editar?
- 17. Fila de cuadrícula de datos de Silverlight Haga clic en
- 18. Cómo enlazar un comando al hacer doble clic en una fila en la cuadrícula de datos
- 19. alineando texto verticalmente en la fila NSTableView
- 20. NSTableView Altura de fila basada en NSStrings
- 21. Haga clic en evento en jTable -Java
- 22. Triple Mouse Haga clic en C#?
- 23. Silverlight 5 Haga doble clic siempre devuelve ClickCount como 1
- 24. Cocoa: Cómo tener un menú contextual al hacer clic con el botón derecho en una celda de NSTableView
- 25. NSTableView - Desactivar selección de fila
- 26. Haga clic en cualquier lugar en una fila de GridView para ingresar al modo de edición
- 27. Hacer editable la fila NSTableView al agregar objetos con NSArrayController
- 28. Enlace UIWebView Haga clic en
- 29. jquery - desactivar haga clic en
- 30. TabPage Haga clic en Eventos
¿Hay alguna forma de conectar esto a través de IB? –
Recuerde también establecer el destino para la vista de tabla con setTarget :, tonto, pero puede pasarse por alto – nduplessis
Debe implementar -setDoubleAction: como un método delegado, o debe crear un IBOutlet iVar en la tabla, y llamar -setDoubleAction: en el iVar? –