J'ai un UITableView avec des sections dans mon application iPhone où il ressemble à quelque chose de similaire à l'affichage d'un contact dans l'application de contacts standard. Dans l'une des sections, j'ai un ensemble UISegmentedControl en tant qu'en-tête de la section et les éléments de cette section dépendent du segment sélectionné dans le contrôle segmenté. Ce que je voulais faire, c'est d'avoir des animations déplaçant les rangées d'un onglet hors de la vue d'un côté et de déplacer les rangées d'un autre onglet de l'autre côté. J'ai réussi à y parvenir en insérant/supprimant les lignes respectives avec les animations UITableView par défaut pour cela, mais cela semble un peu bizarre quand le nombre de lignes dans un onglet est différent de l'autre. Aussi le code pour cela est assez méchant.Tab-like-chose avec animation par tabulation dans une section de UITableView
Voici le code que j'ai (un peu simplifié):
[self.tableView beginUpdates];
UITableViewRowAnimation delAnim = UITableViewRowAnimationRight;
UITableViewRowAnimation insAnim = UITableViewRowAnimationLeft;
NSUInteger numdel = [self.list count];
NSUInteger numins = [newlist count];
NSMutableArray* indices = [NSMutableArray arrayWithCapacity: numdel];
for (NSUInteger i = 0; i < numins; i++)
{
[indices addObject: [NSIndexPath indexPathForRow: i inSection: SECT]];
}
[self.tableView insertRowsAtIndexPaths: indices withRowAnimation: insAnim];
[indices removeAllObjects];
for (NSUInteger i = 0; i < numdel; i++)
{
[indices addObject: [NSIndexPath indexPathForRow: i inSection: SECT]];
}
[self.tableView deleteRowsAtIndexPaths: indices withRowAnimation: delAnim];
self.list = newlist;
[self.tableView endUpdates];
Je suis assez nouveau à l'objectif C et Cocoa, donc tous les conseils sont les bienvenus.
Merci pour vos idées! Le problème est que je veux seulement animer une seule section d'une table et non pas toute la table et votre solution semble animer le tout de ce que je peux voir. Peut-être que je devrais faire une chose distincte pour la zone de tabulation et travailler avec, mais le problème est que j'aime bien le look de la norme UITableView et j'aime faire défiler le contenu au-dessus des onglets, donc je ne suis pas sûr Quelle direction prendre. – inkredibl
Ah, n'a pas remarqué que (Doh, alerte personne non-observateur!). Si vous voulez changer une seule section, vous pouvez utiliser -deleteSection de NSTableView: atIndex: et insertSection: atIndex: pour faire ce que vous cherchez, je pense. Vous pouvez éviter -beginUpdates/-endUpdates cependant, ça a été un peu flou pour moi. J'ai fini par faire mes suppressions, puis j'ai mis en place une minuterie de 0,3 seconde pour faire les insertions. Un peu plus susceptible de se casser si la durée de l'animation implicite change, mais peut être utile si vous avez encore des anomalies graphiques. –