¿Cómo forzar la selección UITableViewCell usando selectRowAtIndexPath?

Estoy intentando forzar la selección (resaltar) de un UITableViewCell usando selectRowAtIndexPath ..

Por ejemplo, Digamos que quiero tener siempre la primera celda en una vista de tabla para resaltar, aplico la siguiente lógica en viewDidAppear

[self.tableViewPrompts selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0]; 

Funciona muy bien. Pero cuando bash aplicar la misma lógica en cualquier otro lugar de la aplicación, la celda no está seleccionada. Incluso intenté deseleccionar otras celdas antes de llamar al método anterior y volver a cargar la tabla antes y después de llamar a este método, pero ninguno de los enfoques parece funcionar ¡!

Incluso utilicé el delegado de tableview para hacer una llamada forzada al didSelectRowAtIndexPath.Event, esto no funciona.

PD: La selección de la celda no activa ninguna acción, todo lo que bash lograr es resaltar la celda deseada.

¿Qué estoy haciendo mal aquí?

¡La ayuda es muy apreciada!

La selección de la celda no activa ninguna acción, todo lo que bash lograr es resaltar la celda deseada.

¿Por qué no usa la propiedad resaltada de la celda?

 UITableViewCell *cell = [self cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]]; cell.highlighted = YES; 

No puedo probarlo ahora, pero debería funcionar …..

editar

Mejor aún, por supuesto: cambie su cellForRowAtIndexPath para hacerlo

 -(UITableViewCell) tableView:cellForRowAtIndexPath: //... if (indexPath.row == 0 && indexPath.section == 0) cell.highlighted = YES else cell.highlighted = NO; //... return cell; 

Estoy desconcertado por qué esto no funciona en tu caso. Aquí está mi método que uso desde varios lugares dentro de mi controller de vista, incluyendo viewDidAppear y no veo ninguna diferencia real con lo que estás haciendo:

 - (void)selectRow1 { NSIndexPath* idx = [NSIndexPath indexPathForRow:1 inSection:0]; [_table selectRowAtIndexPath:idx animated:NO scrollPosition:UITableViewScrollPositionMiddle]; [self tableView:_table didSelectRowAtIndexPath:idx]; } 

_table es mi variable de propiedad de tabla y la llamada a didSelectRowAtIndexPath se realiza para que la acción de selección pueda suceder pero, de lo contrario, la única diferencia real con su código es el parámetro scrollPosition.

Simplemente use setSelected para resaltar cell:

  [cell setSelected:YES]; 

He creado esta extensión para todo el propósito UITableView-Ext