web-dev-qa-db-fra.com

Comment mettre à jour une UITableVIewCell sans recharger la table complète

Duplicata possible:
Est-il possible d'actualiser une seule UITableViewCell dans une UITableView?

Dans une séquence, je ne mets à jour qu'un objet particulier dans mes données de liste (NSMUtableArray), une fois mis à jour sa valeur, pour effectuer la mise à jour de l'interface graphique, j'ai été rechargé le tableau complet comme ci-dessous ...

[table reloadData];

Cela a bien fonctionné, Cependant au point d'efficacité, il se bloque un peu pendant que je défile, Existe-t-il un moyen de mettre à jour uniquement une cellule particulière sans recharger le tableau complet?

merci.

17
Newbee
 - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

Utilisez ceci

31
amar

Vous pouvez utiliser cela ..

NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
//You can add one or more indexPath in this array...

[tblview reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];
9
Scorpian Alive

Vous pouvez obtenir l'objet cellule par -

UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];

modifiez maintenant ses valeurs associées selon votre objet à partir du tableau de données. Cela devrait se refléter dans le tableau. J'espère que cela t'aides.

2
Nameet

Vous pouvez recharger une ligne d'image particulière à l'aide du chemin d'index.

    [mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationNone];
2
Rajneesh071

Lorsque vous effectuez une mise à jour de l'interface graphique, il est préférable d'utiliser reloadData plutôt que d'utiliser d'autres méthodes. reloadData est le meilleur moyen dans votre cas de mettre à jour le UITableView car il évite les incohérences. L'autre chose que vous pouvez faire est que vous pouvez ajouter une condition dans votre cellForRowAtIndexPath et laisser l'exécution se produire uniquement pour la cellule qui est modifiée.

1
Rushi

Si vous ajoutez simplement un élément et que vous souhaitez l'ajouter au tableau, vous pouvez l'insérer manuellement dans votre UITableView, voici un exemple:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];
0
David Chavez