web-dev-qa-db-fra.com

Ajouter/Supprimer UITableViewCell avec animation?

Je sais que cela peut sembler une question idiote, mais j'ai regardé partout. Comment puis-je faire ceci?

Je sais comment faire cela avec une méthode swype-to-delete, mais comment puis-je le faire en dehors de cette fonction?

Merci de poster quelques exemples de code.

Merci!
Coulton

53
iosfreak
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];

insertIndexPaths est un tableau de NSIndexPaths à insérer dans votre table. 

deleteIndexPaths est un tableau de NSIndexPaths à supprimer de votre table. 

Exemple de format de tableau pour les chemins d'index: 

NSArray *insertIndexPaths = [[NSArray alloc] initWithObjects:
        [NSIndexPath indexPathForRow:0 inSection:0],
        [NSIndexPath indexPathForRow:1 inSection:0],
        [NSIndexPath indexPathForRow:2 inSection:0],
        nil];
117
Sabobin

Dans Swift 2.1+

tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([YourIndexPathYouWantToDeleteFrom], withRowAnimation: .Fade)
tableView.insertRowsAtIndexPaths([YourIndexPathYouWantToInsertTo], withRowAnimation: .Fade)
tableView.endUpdates()

Et vous pouvez créer un NSIndexPath facilement comme ceci:

NSIndexPath(forRow: 0, inSection: 0)
7
ColossalChris

Vous voulez ces deux méthodes: insertRowsAtIndexPaths:withRowAnimation: et deleteSections:withRowAnimation: Elles sont toutes deux détaillées dans la documentation UITableView .

4
indragie

Swift 4.0

    tableView.beginUpdates()
    tableView.deleteRows(at: [YourIndexPathYouWantToDeleteFrom], with: .fade)
    tableView.insertRows(at: [YourIndexPathYouWantToInsertTo], with: .fade)
    tableView.endUpdates()

Pour créer IndexPath, utilisez ceci:

IndexPath(row: 0, section: 0)
0
Andrew Vergunov