2011-04-17 6 views
10

Tengo una UITableviewCell. Cuando un usuario hace clic en la celda, guardo la ruta de índice y luego llama al método cellforrowAtIndexpath para obtener la celda y luego llama a SetHighlighted: TRUE en esa celda.Cómo hacer que el estado resaltado de UITableViewCell persista

Esto funciona bien, pero el problema es que cuando me desplazo hacia arriba y hacia abajo en la vista de tabla, la celda seleccionada cuando reaparece, no se resalta. ¿Cómo puedo mantener el color azul resaltado para que el usuario pueda ver su selección visualmente incluso después de desplazar la tabla hacia arriba o hacia abajo?

Gracias

Respuesta

19

salvar el indexpath de la celda seleccionada

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    self.selectedIndexPath = indexPath; 
} 

y comparar en tableVIew:cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    // configure cell 
    if ([indexPath isEqual:self.selectedIndexPath]) { 
     [cell setHighlighted:YES]; 
    } 
    else { 
     [cell setHighlighted:NO]; 
    } 
    return cell; 

} 

Sin embargo, tenga en cuenta que Apple desalienta el uso del estado culminante celular a indicar la celda seleccionada. Probablemente deberías usar cell.accessoryType = UITableViewCellAccessoryCheckmark;

+0

Veo gracias, voy a intentarlo ahora. – banditKing

+0

Gracias por la respuesta. Pero ya tengo un accesorioView como un indicador de cierre detallado. Es por eso que quería resaltar la celda. ¿Eso sería un problema con Apple? ¿Cual es tu consejo? Gracias – banditKing

+0

Nunca se puede saber si está bien con ellos. A veces son muy estrictos con el HIG, a veces no tanto. Solo trataría de enviarlo como es. En el peor de los casos, lo rechazan y lo cambias. –

Cuestiones relacionadas