iOS cómo get, fila de ruta de índice seleccionada actual en el método cellForRowAtIndexPath?

Quiero hacer un enlace usando la label en cada celda de la tabla.

Cuando se hace clic en el enlace, la tabla obtendrá la [fila de ruta índice] de la celda y usaremos el índice para que coincida con el índice de la matriz que contiene los datos de la cadena. La cadena se enviará a la siguiente página de inserción.

Estoy usando UITapGestureRecognizer para tocar la label y poner el parámetro en el método selector.

¿Cómo hacer que la fila de la ruta de índice actual la label en la celda seleccionada? Este es mi código de ejemplo:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ ... UITapGestureRecognizer *gestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openUrl:) ]; gestureRec.numberOfTouchesRequinetworking = 1; gestureRec.numberOfTapsRequinetworking = 1; [cell.listPrice addGestureRecognizer:gestureRec]; [gestureRec release]; ... } - (void)openUrl:(id)sender { NSLog(@"DOwnload URL send >> %@",urlDownloadSend); DownloadNowController *download =[[DownloadNowController alloc]initWithNibName:@"DownloadNowController" bundle:nil]; [self.navigationController pushViewController:download animated:YES]; [download release]; } 

Para determinar la celda seleccionada actual, puede usar el siguiente método de UITableView :

 - (NSIndexPath *)indexPathForSelectedRow 

Pero no estoy seguro de que su celda se seleccionará después de que se UITapGestureRecognizer .

Le aconsejo que almacene la fila de la celda directamente en gestureRec.view en la propiedad de la tag :

 gestureRec.view.tag = indexPath.row; 

Luego, en openUrl puede determinar la celda seleccionada obteniendo el valor de sender.view.tag

No está muy claro qué quiere hacer … ¿tiene un enlace distribuido en UITableViewCell que desencadena otras acciones?

El UITableViewDelegate te ofrece algunos methods geniales llamados:

 – tableView:willSelectRowAtIndexPath: – tableView:didSelectRowAtIndexPath: – tableView:willDeselectRowAtIndexPath: – tableView:didDeselectRowAtIndexPath: 

Cuando toca una celda, se willSelectRowAtIndexPath la dirección willSelectRowAtIndexPath y a la dirección didSelectRowAtIndexPath , que le proporcionará el NSIndexPath actualmente seleccionado, que luego puede usar para get la fila de la siguiente manera:

 indexPath.row; 

Puede usar una variable global para mantener el valor de indexpath.row

Almacenar la fila en didSelectRow:atIndexPath: method

 var = indexPath.row; [tableView reloadData]; var = indexPath.row; [tableView reloadData]; 

luego utilícelo en cellForRowAtIndexPath

 if(indexPath.row==var){ 

}

Puede implementar el método – tableView:willSelectRowAtIndexPath: en su UITableViewDelegate . Allí puede get fácilmente información sobre indexPath.

puedes hacer esto

en el método fuente de datos cellForRowAtIndexPath

 UIImageView* selectedBg = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bg_selected.png"]]; cell.backgroundView = [[UIView alloc] initWithFrame: CGRectZero]; cell.selectedBackgroundView = selectedBg; [cell.backgroundView setNeedsDisplay]; [selectedBg release]; 

El siguiente código se puede usar para get la fila de ruta de índice seleccionada actual:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath { NSLog(@"selected tableview row is %ld",(long)indexPath.row); }