Ich habe eine UITableView mit Abschnitten in meiner iPhone-Anwendung, wo es ähnlich aussieht wie das Anzeigen einer Kontaktdetails in Standard-Kontakte App. In einem der Abschnitte habe ich einen UISegmentedControl-Satz als Überschrift des Abschnitts und die Elemente in diesem Abschnitt hängen davon ab, welches Segment im segmentierten Steuerelement ausgewählt ist. Was ich tun wollte, ist, Animationen zu haben, die die Reihen eines Tabs aus der Ansicht auf eine Seite verschieben und die Reihen eines anderen Tabs von der anderen Seite her verschieben. Ich habe es geschafft, dies zu erreichen, indem ich die entsprechenden Zeilen mit den Standard-Animationen von UITableView dafür einfüge/lösche, aber es sieht ein bisschen komisch aus, wenn sich die Anzahl der Zeilen in einer Registerkarte von der anderen unterscheidet. Auch der Code dafür ist ziemlich eklig.Tab-like-Sache mit Tab-Switch-Animation in einem Abschnitt von UITableView
Hier ist der Code, den ich (etwas vereinfacht) haben:
[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];
ich Objective C und Cocoa ziemlich neu bin, so dass alle Ratschläge sind sehr willkommen.
Vielen Dank für Ihre Einsichten! Das Problem ist jedoch, dass ich nur einen einzelnen Abschnitt einer Tabelle animieren möchte, nicht die gesamte Tabelle, und Ihre Lösung scheint das Ganze von dem, was ich sehe, zu animieren. Vielleicht sollte ich eine separate Sache für die Tabbing-Bereich machen und damit arbeiten, aber das Problem ist, dass ich das Aussehen der Standard-UITableView mag und ich mag, dass ich den Inhalt über Tabs aus der Sicht scrollen kann, so bin ich mir nicht sicher Wo lang geht es. – inkredibl
Ah, habe das nicht bemerkt (doh, nicht aufmerksame Person Alarm!). Wenn es sich um einen einzelnen Abschnitt handelt, den Sie ändern möchten, können Sie NSTableView -deleteSection verwenden: atIndex: und insertSection: atIndex: um zu tun, was Sie suchen, denke ich. Vielleicht möchten Sie -beginUpdates/-endUpdates vermeiden, aber es war ein bisschen flockig für mich. Ich beendete meine Löschungen und stellte dann einen 0,3-Sekunden-Timer ein, um die Einfügungen durchzuführen. Ein bisschen anfälliger zu brechen, wenn die implizite Animationsdauer sich jemals ändert, aber es könnte nützlich sein zu versuchen, wenn Sie immer noch grafische Anomalien bekommen. –