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.
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
Utilisez ceci
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];
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.
Vous pouvez recharger une ligne d'image particulière à l'aide du chemin d'index.
[mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
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.
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];