2012-10-11 39 views
6

Tengo NSTableView del tipo de contenido View Based con dos columnas.¿Cómo obtener elementos dentro de una fila seleccionada en un NSTableView?

Mis objetos tienen la siguiente estructura:

Table View 
    Table Column 
     Table Cell View 
      Text Field 
    Table Column 
     Table Cell View 
      Popup Button 

Para una fila seleccionada, quiero conseguir un elemento dentro de la fila seleccionada para una columna específica. Específicamente, quiero obtener el Text Field en la primera columna de la fila seleccionada.

tengo una salida a la vista de tabla y tengo el índice de la fila seleccionada hasta ahora, pero eso es todo:

- (void)getSelectedTextField 
{ 
    NSInteger selected = [tableView selectedRow]; 
} 

¿Alguna idea sobre cómo puedo ir sobre hacer frente a este problema?

Editar: Esto es lo que estoy tratando de hacer: Quiero cambiar el campo de texto para estar en un estado de edición y se centran en ella por lo que el usuario puede empezar a editar el valor del campo de texto tan pronto como se selecciona

+1

¿Para qué es necesario acceder a los elementos? Si solo necesita obtener los datos, debe almacenarlos en un NSTableViewDataSource y luego proporcionar ese origen de datos al NSTableView. –

+0

@NathanVillaescusa: Es para modificar uno de los controles. Específicamente, deseo cambiar el campo de texto para que esté en un estado de edición y centrarme en él para que el usuario pueda comenzar a editar el valor del campo de texto tan pronto como sea seleccionado. –

Respuesta

18

me parecía haber resuelto mi problema:

- (void)getSelectedTextField 
{ 
    NSInteger selected = [tableView selectedRow]; 

    // Get row at specified index 
    NSTableCellView *selectedRow = [tableView viewAtColumn:0 row:selected makeIfNecessary:YES]; 

    // Get row's text field 
    NSTextField *selectedRowTextField = [selectedRow textField]; 

    // Focus on text field to make it auto-editable 
    [[self window] makeFirstResponder:selectedRowTextField]; 

    // Set the keyboard carat to the beginning of the text field 
    [[selectedRowTextField currentEditor] setSelectedRange:NSMakeRange(0, 0)]; 
} 
+1

Señor, ¿puede ayudarme a obtener un elemento seleccionado de un cuadro combinado, que agregué en una de las columnas inscritas en el campo de texto. Cualquier ayuda es genial – Abin

0

Si el campo de texto es la única vista secundaria de la célula de vista de la tabla, se puede obtener una referencia a él con el siguiente código, y seleccionar el texto, para que esté listo para su edición:

-(void)tableViewSelectionDidChange:(NSNotification *)notification { 
    NSInteger row = [notification.object selectedRow]; 
    NSTextField *tf = [[[notification.object viewAtColumn:0 row:row makeIfNecessary:NO]subviews] lastObject]; 
    [tf selectText:tf.stringValue]; 
} 
3

El uso puede obtener todos los elementos de la celda de vista de tabla obteniendo su subvista. Sugerir la vista previa de la lista de registro de muestra antes de usarla

NSInteger index = [self.tableViewFiles selectedRow]; 

// Get row at specified index of column 0 (We just have 1 column) 
NSTableCellView *cellView = [self.tableViewFiles viewAtColumn:0 row:index makeIfNecessary:YES]; 

// Get row's checkBox (at index 0, textFields is 1,2) 
NSButton *checkBox = [[cellView subviews] objectAtIndex:0]; 
Cuestiones relacionadas