Comment recharger et animer une seule cellule / ligne UITableView?

Comment puis-je recharger et animer une seule cellule / ligne? En ce moment, je télécharge des fichiers. Chaque fois qu’un fichier a été téléchargé, j’appelle son délégué terminé et appelle [recharger tableview]. Mais la table entière se recharge ensuite. Et comment puis-je animer la table pour qu’elle ne clignote pas. Par exemple, un effet de fondu, etc.

accueille Max

Utilisez la méthode d’instance UITableView suivante:

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

Vous devez spécifier un NSArray de NSIndexPaths que vous souhaitez recharger. Si vous voulez juste recharger. Si vous souhaitez uniquement recharger une cellule, vous pouvez fournir un NSArray NSIndexPath uniquement un NSIndexPath . Par exemple:

 NSIndexPath* rowToReload = [NSIndexPath indexPathForRow:3 inSection:0]; NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil]; [myUITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone]; 

Vous pouvez voir l’énumération UITableViewRowAnimation pour toutes les manières possibles d’animer l’actualisation de la ligne. Si vous ne voulez pas d’animation, vous pouvez utiliser la valeur UITableViewRowAnimationNone , comme dans l’exemple.

Le rechargement de lignes spécifiques présente un avantage plus important que l’obtention de l’effet d’animation souhaité. Vous obtenez également une amélioration considérable des performances car seules les cellules que vous avez vraiment besoin de recharger ont leurs données actualisées, repositionnées et redessinées. En fonction de la complexité de vos cellules, il peut y avoir une surcharge à chaque fois que vous actualisez une cellule. Il est donc nécessaire d’optimiser autant que possible la quantité de rafraîchissements que vous effectuez.

Si vous avez seulement besoin de mettre à jour le texte dans la cellule tableview.

 UITableViewCell *cell = [_myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]]; cell.textLabel.text = [NSSsortingng ssortingngWithFormat:@"%i", (int)_targetMaxDistanceSlider.value]; 

Apple Document l’a fait avec une nouvelle syntaxe

 [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; 

Pour recharger des cellules particulières dans une tableView à tableView donné, vous devez créer un tableau d’ indexPaths , puis appeler la fonction reloadRowsAtIndexPaths sur la tableView .

Voici l’exemple:

Rapide:

 let indexPathsToReload = [indexPath1, indexPath2, indexPath3] tableView.reloadRowsAtIndexPaths(indexPathsToReload, withRowAnimation: .None) 

Objectif c:

 NSArray *indexPaths = @[indexPath1, indexPath2, indexPath3]; [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; 

ou

 NSArray *indexPaths = [NSArray arraywithobject:@"indexPath1", @"indexPath2", @"indexPath3",nil]; [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];