2010-09-13 5 views
0

J'ai un UITableViewCell personnalisé qui sert de liste de contrôle. Lorsque l'utilisateur clique sur l'élément sélectionné, il passe du rouge au vert pour indiquer une sélection, mais lorsque les utilisateurs défilent plus bas dans la liste, une fois qu'ils reviennent en haut, l'image a retrouvé sa valeur rouge par défaut.Préserver l'image de la cellule après défilement UITableView

Comment puis-je préserver l'état d'une image lorsque celle-ci recycle les cellules?

Merci

Répondre

1

Il semble que vous utilisiez UITableViewCell s pour stocker l'état de vos données de table. C'est la mauvaise approche parce que les cellules sont réutilisées. Vous devriez conserver l'état dans un 'magasin de données' séparé. Cela peut simplement être un tableau que vous gardez en mémoire dans votre sous-classe UITableViewController ou quelque chose de persistant comme SQLite ou Core Data. Cet état est ensuite retransféré à la cellule lorsque la vue de table vous demande de tableView:cellForRowAtIndexPath:.

0

J'ai eu le même problème. Utilisation:

MyTableViewCell* cell = [tableView dequeCellWithReuseIdentifier:@"MyTableViewCell"]; 
if (cell == nil) { /* create cell */ } 
/* and now you reset the properties of that cell */ 
cell.text = [myCellText objectAtIndex:indexPath.row]; 

La clé ici est de réinitialiser les propriétés de la cellule de table dequeued sur la base du indexPath. Cela signifie que vous devrez conserver assez d'état pour recréer n'importe quelle cellule de table - y compris les images que vous utilisez.

Questions connexes