2011-01-12 5 views
0

In meiner App habe ich einen Detailbildschirm für Produktobjekte. Die Benutzeroberfläche ruft auf, dass die Produktdetails über eine gruppierte Tabellenansicht mit drei Abschnitten angezeigt werden.Zellen für UITableView mit nicht einheitlichen Daten definieren

Einige der Zellen in dieser Tabelle sind bedingt. Zum Beispiel sollte der dritte Abschnitt standardmäßig eine einzelne Zelle anzeigen, die "Register Product" (Produkt registrieren) anzeigt und die Registrierungsansicht beim Antippen berühren sollte. Wenn das Produkt bereits registriert ist, sollte der dritte Abschnitt stattdessen zwei Zellen anzeigen, eine für Garantie und eine für Wartungsinformationen. Diese würden jeweils auf verschiedene Bildschirme gehen, wenn sie angetippt werden. Außerdem müssen beide eine Art von Daten in der Tabellenzelle anzeigen. Die Garantiezelle sagt, wenn die Garantiezeit abgelaufen ist und die Wartungszelle sagt, wann die nächste Wartung fällig ist.

FRAGE (finnally): Was ist der beste Weg, um die Zellen und Abschnitte zu definieren, die die Tabelle in jeder gegebenen Situation haben sollte. In erster Linie suche ich nach einem wartbaren Weg, dies zu tun, da ich bereits einige Ideen über nicht-wartbare Wege dazu habe.

Sollte ich während ViewWillAppear eine Art Keyed Dictionary erstellen und Elemente hinzufügen/entfernen, basierend auf dem angezeigten Produkt? Ich mache mir Sorgen um die Anzahl der Switch-Anweisungen, die ich in den verschiedenen tableView-Ereignissen verwenden müsste, um zu überprüfen, um welchen Zellentyp es sich bei einem bestimmten Indexpfad handelt.

Irgendwelche Ideen?

Antwort

0

Werfen Sie einen Blick auf Matt Gallagher's Tableview Classes. Sie bieten ein einfaches und erweiterbares Framework für anpassbare Tableviews. Zellen können von einer NIB geladen oder in Code erstellt werden. Es gibt eine einfache Schnittstelle, um die Daten für jede Zelle zur Verfügung zu stellen (- (void)configureForData:(id)dataObject). leicht

die Tableview Bestücken ist:

[self addSectionAtIndex:0 withAnimation:UITableViewRowAnimationNone]; 
[self appendRowToSection:0 
    cellClass:[NibLoadedCell class] 
    cellData:@"This is row 0" 
    withAnimation:UITableViewRowAnimationLeft]; 

Für dauerhafte Speicherung der Daten, die ich empfehlen, von dort ein plist Wörterbuch und laden/speichern Daten zu erstellen. Siehe Property List Programming Guide. Verwenden Sie für komplexe Datenbankstrukturen Kerndaten für die Speicherung.

Verwandte Themen