2010-12-14 13 views
17

Tengo una vista de tabla con algunos nombres en cada celda, ¿cómo puedo obtener ese nombre cuando selecciono la fila?cómo obtener el título de la fila seleccionada en UITableview

Yo sé que tengo que utilizar el método delegado

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

pero ¿cómo puedo conseguir que el título de esa fila?

gracias de antemano

respecto

+0

Las filas no tienen títulos. ¿Que estás tratando de hacer? –

+0

me refiero a cada celda en UItableview – appleDE

Respuesta

54
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSString *cellText = selectedCell.textLabel.text; 
} 

Este fragmento recupera la celda seleccionada y almacena su propiedad text en NSString.


Sin embargo, No recomiendo este. Es mejor mantener separados los datos y las capas de presentación. Utilice un almacén de datos de respaldo (por ejemplo, una matriz) y acceda a él usando los datos en el objeto indexPath pasado (por ejemplo, el índice que se utilizará para acceder a la matriz). Este almacén de datos será el mismo que se usó para completar la tabla.

+0

¡Impresionante! Muchas gracias. – iDev

9

Suponiendo que estés usando un UITableViewCell estándar, se puede obtener la célula mediante el uso de

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

luego acceder a las propiedades de la vista a través de la propiedad de texto:

cell.textLabel.text 
cell.detailTextLabel.text 
+0

Y esto hace qué? :-) – Eiko

+0

sí, ¿qué es eso? – appleDE

+0

(+1) Útil para mí, incluso el pequeño error de tipeo. en el código es UITableViewCell y usted escribe UITableView (pero lo escribe correctamente en el texto anterior). – HpTerm

2

Una vez que haya registrado una de sus clases como delegado a través de la propiedad de delegado UITableView, simplemente implemente el método tableView:didSelectRowAtIndexPath:, que se invocará cuando el usuario seleccione una fila. (Véase la UITableViewDelegate Protocol Reference para obtener más información.)

entonces se podría extraer el texto de la etiqueta de la celda seleccionada a través de ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
     NSString *cellLabelText = cell.textLabel.text; 
    } 

..si esto es realmente lo que necesita.

3

se puede acceder a cada fila de la uitabelview usando la siguiente función (uitableview-):

cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 

por cierto, para acceder a su tableview en otros métodos distintos método delegado de UITableView, usted tiene que conectarlo en IB (por ejemplo ..)

creo que sirve

0
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *rowTitle=[tableView cellForRowAtIndexPath:indexPath].textLabel.text; 
} 

Aquí,

[tableView cellForRowAtIndexPath: indexPath] le da la celda seleccionada y luego .textLabel.text le da la etiqueta para esa celda.

Cuestiones relacionadas