2017-03-09 3 views
0

Ich habe eine UITableView mit ± 10 verschiedenen UITableViewCells, um vollständige Informationen über ein Objekt anzuzeigen (Beschreibungszelle, Fotozelle usw.). Also, wenn UITableView geladen ist, brauche ich UITableView Zellen nicht wiederverwendet werden. Wäre die Leistung nicht besser, wenn ich irgendwie UITableViewCells speichern und verhindern würde, dass cellForRowAtIndexPath aufgerufen wird? Wenn ja, wie kann man dasselbe Verhalten erreichen?UITableView mit einer begrenzten Anzahl von Zellen

+0

Es gibt eine statische Zelle, die für tableviewController verwendet werden kann. mach ein paar RND drauf. –

Antwort

1

Als Erstes können Sie nicht verhindern, dass cellForRowAtIndexPath aufgerufen wird, wenn Sie UITableView verwenden. Es ist eine UITableViewDataSource-Funktion und es ist keine optionale Funktion. Andernfalls können Sie Ihre Tabellenansicht nicht füllen.

Was Sie tun können, ist Switch-Case für indexpath.row in CellForRowAtIndexPath verwenden und erforderliche Zelle zurückgeben.

+0

yeap. das ist, wie ich das tue, die Frage ist, ob Scroll-Leistung besser wäre, wenn sie Zellen irgendwie speichern anstatt sie wiederzuverwenden. – JuicyFruit

+1

Wenn Sie beim Anzeigen der Zellen oder beim Ausführen von Netzwerkaufrufen keine komplexe Operation ausführen, sollte die Leistung beeinträchtigt werden. und die Zellen werden nur dann wiederverwendet, wenn dieselbe Zelle an zwei verschiedenen Positionen/indexpath in der Tabellenansicht aufgerufen wird, die nicht gleichzeitig angezeigt werden können (ohne Scrollen). – rv7284

+0

Kommentar ist eine Antwort, danke. – JuicyFruit

0

Sie könnten versuchen, Prototyp Zelle im Storyboard zu erhöhen. Jede Zelle weist eine neue Zellenkennung zu und Sie müssen das Array mit der ID, die zu ihrem Index passt, im Storyboard behalten.

Ihre cellForRowAtIndexPath wird reduziert:

- (UITableViewCell *)tableView:(UITableView *)tableView1 cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:[cellIdArray objectAtIndex:indexPath.row] forIndexPath:indexPath]; 

    return cell; 
} 

Hinweis: cellForRowAtIndexPath Methode wird immer aufgerufen. Im obigen Fall können Sie Ihre Daten selbst im Storyboard ablegen. Überprüfen Sie ähnliche Fälle unter https://www.appcoda.com/sidebar-menu-swift/

Verwandte Themen