2010-04-11 3 views
0

Dans le sélecteur tableView:accessoryButtonTappedForRowWithIndexPath:, je souhaite mettre à jour le backgroundColor de la cellule.Mise à jour de l'arrière-plan de UIViewTableCell lorsque l'URL de l'accessoire est cliquée

Je peux obtenir le UIViewTableCell en utilisant cellForRowAtIndexPath: mais je ne sais pas comment je peux mettre à jour sa couleur de fond. Le code beliw ne semble pas fonctionner.

[_tableView beginUpdates]; 
    cell.backgroundColor = [UIColor grayColor]; 
    [_tableView endUpdates]; 

Une suggestion?

Répondre

0

Je voudrais d'abord essayer [cell setNeedsDisplay];.

Aussi beginUpdates et endUpdates est destiné à être utilisé lorsque vous allez être inséré/supprimer des lignes etc, donc je ne pense pas que ce soit nécessaire ici.

Les couleurs d'arrière-plan sur les cellules sont une chose délicate car la vue de table fera un peu de magie derrière les scènes pour gérer la sélection des cellules. Pour obtenir un comportement fiable, vous devez définir la couleur d'arrière-plan de la cellule dans cette méthode de UITableViewDelegate:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell 
forRowAtIndexPath:(NSIndexPath *)indexPath 

Une vue de la table envoie ce message à son délégué juste avant qu'il utilise la cellule pour tracer une ligne, permettant ainsi le délégué Personnalisez l'objet de cellule avant qu'il ne soit affiché. Cette méthode permet au délégué de remplacer les propriétés basées sur l'état définies précédemment par la vue de la table, telles que la couleur de sélection et la couleur d'arrière-plan. Une fois le délégué renvoyé, la vue de table définit uniquement les propriétés alpha et frame, puis uniquement lors de l'animation des lignes lorsqu'elles sont déplacées ou déplacées.

+0

le tableView: willDisplayCell: forRowAtIndexPath: n'est invoqué que lorsque la table est chargée pour la première fois. Si je veux le changer quand on clique sur accesoryURL, la définition de [tableView setNeedsLayout] ne provoque pas l'invocation de cette méthode. Une idée de comment je peux y arriver? – psychotik

Questions connexes