Ich versuche herauszufinden, wie UITableViewCellStyle
bei Verwendung der neuen Methoden in iOS 6 für UITableView
festgelegt wird.Festlegen des Stils von UITableViewCell bei Verwendung von iOS 6 UITableView dequeueReusableCellWithIdentifier: forIndexPath:
Früher, als ein UITableViewCell
Schaffung würde ich die UITableViewCellStyle
Enum ändern, um verschiedene Arten von Standard-Zellen zu erzeugen, wenn initWithStyle:
Aufruf aber von dem, was ich sammeln kann, ist dies nicht mehr der Fall.
Die Apple-Dokumentation für UITableView
heißt es:
Rückgabewert: Ein UITableViewCell Objekt mit der Wiederverwendung Kennung zugeordnet. Diese Methode gibt immer eine gültige Zelle zurück.
Diskussion: Aus Leistungsgründen eine Datenquelle der Tabelle Ansicht sollten generell UITableViewCell Objekte wiederverwenden, wenn es Zellen Zeilen in seiner Tableview zuordnet: cellForRowAtIndexPath: Methode. Eine Tabellensicht verwaltet eine Warteschlange oder Liste von UITableViewCell-Objekten, die die Datenquelle zur Wiederverwendung markiert hat. Rufen Sie diese Methode von Ihrem Datenquellenobjekt auf, wenn Sie aufgefordert werden, eine neue Zelle für die Tabellenansicht bereitzustellen. Mit dieser Methode wird eine vorhandene Zelle aus der Warteschlange entfernt, wenn eine vorhanden ist, oder eine neue Zelle basierend auf der zuvor registrierten Klassen- oder Nib-Datei erstellt.
Wichtige: Sie müssen eine Klasse oder nib Datei registrieren mit dem registerNib: forCellReuseIdentifier: oder register: forCellReuseIdentifier: Verfahren vor dem Aufruf dieser Methode.
Wenn Sie eine Klasse für den angegebenen Bezeichner registriert haben und eine neue Zelle erstellt werden muss, initialisiert diese Methode die Zelle durch Aufrufen der Methode initWithStyle: reuseIdentifier:. Bei Nib-basierten Zellen lädt diese Methode das Zellobjekt aus der bereitgestellten NIB-Datei. Wenn eine vorhandene Zelle für die Wiederverwendung verfügbar war, ruft diese Methode stattdessen die prepareForReuse-Methode der Zelle auf.
Dies ist, wie meine neue cellForRowAtIndexPath
sieht nach den neuen Methoden der Umsetzung:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell_identifier";
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
return cell;
}
Der Code, den ich bisher habe funktioniert gut, aber immer den Standardstil. Wie kann ich das ändern, damit ich Zellen mit den anderen Stilen wie UITableViewCellStyleDefault
, UITableViewCellStyleValue1
, UITableViewCellStyleValue2
und UITableViewCellStyleSubtitle
erstellen kann?
Ich möchte keine Unterklasse UITableViewCell
, Ich möchte nur den Standardtyp ändern, wie ich vor iOS 6 tun konnte. Es scheint seltsam, dass Apple erweiterte Methoden, aber mit minimalen Dokumentation zur Unterstützung ihrer Implementierung bieten würde.
Hat jemand dies gemeistert, oder läuft auf ein ähnliches Problem? Ich habe Mühe, überhaupt vernünftige Informationen zu finden.
Ich begann in der Tat davon aus, dass dies der Fall sein würde. Es ist kein großes Problem, aber die 'UITableViewCell'-Unterklasse zu entfernen, um die anderen Standardstile zu erhalten, ist ein Problem, da es nur unnötige Dateien erzeugt. Danke für deinen Kommentar und bestätige meinen Verdacht. – CaptainRedmuff
Vergessen Sie nicht, dass Sie anstelle der Unterklassen die alte iOS5-Methode verwenden können, die immer noch gültig ist.Auf diese Weise können Sie jeden gewünschten Zellstil initialisieren. Siehe die andere Antwort. – SpacyRicochet