2016-04-14 7 views
0

Ich habe eine UITableView mit zwei Abschnitten und ich habe eine Schaltfläche, die die Tabellenansicht in den Bearbeitungsmodus ändert, aber nur der untere Abschnitt ist editierbar.Scrollen zwischen Abschnitten in UITableView mit ausgewählten Zellen

Wenn ich Zeilen auswähle und nur im unteren Bereich scrolle (im Bearbeitungsmodus), behalten die Zeilen ihre Auswahl. Wenn ich jedoch nach oben scrolle, bis der untere Abschnitt ausgeblendet ist, und den unteren Abschnitt zurücksende, ist die Auswahl gelöscht.

Das Scrollen zwischen den Abschnitten löscht die Auswahl.

Warum passiert das? Wie kann das behoben werden?

+0

Mögliche Duplikat sein [UITableView ausgewählte Zelle nicht bleiben nicht ausgewählt, wenn gescrollt] (http://stackoverflow.com/questions/13275405/uitableview-selected-cell-doesnt -Stay-selected-when-scrolled) –

+0

Haben Sie zwei verschiedene Zellbezeichner für die beiden Abschnitte? – Magoo

+0

Nein, sie sind identisch, weil sie aus dem Storyboard stammen. – daniel3223

Antwort

0

Also nur für die Nachwelt. Im Allgemeinen ist es sogar dann besser, wenn Tabellenzellen dieselbe Klasse haben, wenn sie ein unterschiedliches Verhalten haben, wenn es um Editierbarkeit geht, ist es oft besser, zwei separate CellIdentifier-Zeichenfolgen zu haben, um viel Wechsel zwischen Zuständen zu vermeiden.

kann so einfach wie

static NSString *CellIdentifier = @"Cell"; 
static NSString *CellIdentifier2 = @"Cell2"; 


NSString *identifierString = indexPath.section == 0 ? CellIdentifier:CellIdentifier2; 

MYTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifierString]; 

if (!cell) 
    cell = [[MYTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifierString]; 
Verwandte Themen