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.
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