web-dev-qa-db-fra.com

UITableView ajouter une animation de cellule

Quelqu'un peut-il m'aider avec le problème d'animation UITableView?

Par défaut, nous avons une animation pour supprimer les cellules et réorganiser les cellules dans UITableView.

Pouvons-nous avoir une cellule d'animation ajoutée, si oui, comment le faire.

J'ai vérifié Three2, je n'ai pas compris comment Twitter a fait l'animation de développement de la table sous MyProfile> ReTweets.

Vous voulez l'essayer sans Three20 frameowrk, en utilisant l'animation existante dans UITableView.

32
Ameya

Vous pouvez utiliser la méthode UITableView suivante:

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

Exemple avec self.dataSource étant un tableau mutable et votre table ayant seulement 1 section:

[self.dataSource addObject:@"New Item"];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[self.dataSource count]-1 inSection:0];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];

Remarque: soustrait 1 du nombre de sources de données car NSIndexPath est indexé zéro.

62
RunLoop

Swift

Exemple de tableau qui est la source de données pour la vue de table

var myArray = ["Cow", "Camel", "Sheep", "Goat"]

Ce qui suit ajoutera une ligne avec animation en haut de la vue de table.

// add item to current array
myArray.insert("Horse", atIndex: 0)

// insert row in table
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)

Mises à jour multiples

Si vous devez effectuer plusieurs insertions et/ou suppressions, entourez-les de beginUpdates() et endUpdates().

tableView.beginUpdates()
tableView.insertRowsAtIndexPaths([addIndexPath1, addIndexPath2, ...], withRowAnimation: .Fade)
tableView.deleteRowsAtIndexPaths([deleteIndexPath1, deleteIndexPath2, ...], withRowAnimation: .Fade)
tableView.endUpdates()

Lectures complémentaires

13
Suragch

Utilisez reloadRowsAtIndexPaths: indexPath

    tableView.beginUpdates()
    [tableView reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationAutomatic];
    tableView.endUpdates()

j'espère que cela t'aidera..

0
Muruganandam.S