35 votes

iOS - La table de rafraîchissement UITableView correctement?

J'ai beaucoup de données et beaucoup de lignes dans ma tableView. lorsque les données changent, je veux mettre à jour mes cellules visibles à l'écran, je ne veux vraiment pas utiliser reloadData car c'est un appel coûteux.

Est-il possible de mettre à jour en quelque sorte uniquement les cellules visibles? J'ai essayé d'appeler: beginUpdate & endUpdate sur la table, mais cela ne fonctionne pas tout le temps?

Aucune suggestion?

87voto

Seamus Campbell Points 11752

Vous pouvez:

 [tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows] 
                 withRowAnimation:UITableViewRowAnimationNone];
 

-1voto

Free Mason Points 29

Essayez d'appeler «deleteRowsAtIndexPaths», une méthode de UITableView, juste après avoir supprimé le modèle de votre source de données. Par exemple, si vous supprimez une ligne en mode édition, vous pouvez écrire quelque chose comme le code ci-dessous. Notez que la première ligne de l'instruction «if» supprime l'objet de la source de données et la deuxième ligne nettoie la table:

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

 if ( editingStyle == UITableViewCellEditingStyleDelete ) {

     [[[[[ItemsStore sharedStore] parameterArray] objectAtIndex:indexPath.section]  objectForKey:@"data"] removeObjectAtIndex:indexPath.row];

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

}
 

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X