2010-12-04 14 views
0

Manchmal wird ein winziges Problem ignoriert, aber es wird nie ein Albtraum für dich werden.TableView's viewWillAppear() genannt, aber Daten werden nicht aktualisiert

Vielen Dank im Voraus, Problem meine App Einstellungen Seite enthält TableView und jedes Einstellungselement ist eine der Ansicht. Einer der Einstellungsartikel (Zeilen) bietet eine Liste von Elementen in einer anderen ListTableView. Nachdem ich in listTableView eine Auswahl getroffen habe, wenn ich mit networkingItem.leftButton (Back) zu meiner settings tableView zurückkehre, überlagert der ausgewählte Elementwert den Wert des vorherigen Elements im Sinne von [tableView reloadData] in viewWillAppear, aber Tabellenzeilen werden nicht neu gezeichnet. Die Benutzeroberfläche der Zelle wird nicht aktualisiert.

Beachten Sie, dass, wenn SettingTableView eine Unteransicht wie UIButton usw. hat den neuesten Wert, ich kann das als Workaround verwenden, aber das einzige Problem ist, wenn diese Zeile erneut auswählen Auswahl hat alten Wert, der beim Auswählen der Zeile neuen Wert überlappt.

Ich werde jeden Vorschlag oder Beispielcode mit Hilfe wird große Hilfe sein.

Dank einer Tonne Amit Singh

+0

Was ist in Ihrer 'tableView: cellForRowAtIndexPath:' Methode und 'viewWillAppear' Methode? – BoltClock

Antwort

0

Verwendung [tableView reloadData]; in Ihrem viewWillAppear Methode.

+0

ich benutze reloadData in viewWillAppear nur das ist der Grund, wenn Daten in einem UIbutton platziert wird aktualisiert ... – AmitSingh

0

oder verwenden [tableView reloadData]; in viewDidAppear Methode

0

Das Problem Sie konfrontiert sind, ist vielleicht aufgrund Teil der Zelle, die wiederverwendbar und ist eine, die nicht wiederverwendet wird. Schauen Sie sich den Code, den Sie in dem Block von

if(cell==nil){} 

Komponenten Schreiben Sie in Block erstellt haben, wird nicht erhalten neu und andere vielleicht werden neu erstellt verursachen die Überlappung auf der Zelle.

+0

ich verwende in ... if (zelle == nil) { \t \t zelle = [self getCellContentView: CellIdentifier ]; \t} – AmitSingh

+0

und getCellContentView: enthält> - (UITableViewCell *) getCellContentView: (NSString *) cellIdentifier { \t \t UITableViewCell * Zelle; \t \t UIViewController * tempController = [[UIViewController-Zuweisung] initWithNibName: (NSString *) @ "NibName" -Bündel: (NSBundle *) nil]; \t \t Zelle = (UITableViewCell *) tempController.view; \t \t cell.selectionStyle = UITableViewCellSelectionStyleGray; \t \t Rückstellzelle; } – AmitSingh

0

In meinem Fall musste ich [self.tableView reloadData]; anstatt [tableView reloadData]; in der viewWillAppear-Methode.

Verwandte Themen