2010-11-22 19 views
1

Ich habe ein wirklich seltsames Problem mit UITableView/UITableViewCells.UITableViewCell wird bei der Anzeige nicht aktualisiert?

Ich habe eine einfache UITableView, die eine Liste von Objekten (für Argument, sagen wir MenuItemsViewController), die ein Kind Objekt namens ItemViewController hat. MenuItemsViewController ändert nur die Eigenschaft menuItem in ItemViewController, wenn der Benutzer ein Objekt in MenuItemsViewController auswählt.

Wenn der Benutzer sein erstes Element auswählt, wird alles gut angezeigt. Bei einer nachfolgenden Auswahl anderer Elemente ändern sich jedoch die Daten im ersten Abschnitt des ItemViewControllers nicht, d. H. Es werden weiterhin die Eigenschaften des allerersten Elements angezeigt. Ich habe Haltepunkte am Ende meiner Methoden tableView:cellForRowAtIndexPath: und tableView:willDisplayRowAtIndexPath: gesetzt, und Zellen abfragen, wie sie angezeigt werden, zeigt, dass die textLabel/detailTextLabel Eigenschaften alle korrekt sind - d. H. Intern haben sie genau den Zustand, den sie haben sollen. UITableView zeigt jedoch immer noch nicht die richtigen Informationen an.

Jede Hilfe ist willkommen - dieses Thema macht mich verrückt. Ich nehme jetzt ein Video auf YouTube auf und lade es hoch, um es zu demonstrieren, da es so ein bizarres Thema ist, dass die Leute meines Wissens vielleicht mißverstehen, was ich verlange.

edit: und Video - http://www.youtube.com/watch?v=AwHTaHCQtX8&feature=youtube_gdata_player

EDIT # 2: Also, das ist verrückt: nach 6 Stunden am Stück von Debuggen und Testen, es stellt sich heraus, die Animation Problem durch den Aufruf einen Getter auf einem NSManagedObject das verursacht wird, ist fehlerhaft ... Ich habe keine Idee warum. Keiner. Ich denke, das ist jetzt eine Kerndatenfrage, also füge ich das als Tag hinzu.

Antwort

0

Sie müssen der Tabellenansicht mitteilen, dass der Inhalt geändert wurde. Eine mögliche Lösung wäre das Hinzufügen [self.tableView reloadData] zu der viewWillAppear: Methode von ItemViewController.

Aber ich empfehle Ihnen, die menuItem -Eigenschaft zu überschreiben und Code hinzuzufügen, um nur geänderte Zellen/Abschnitte über reloadRowsAtIndexPaths:withRowAnimation:/reloadRowsAtIndexPaths:withRowAnimation: jeweils zu überlasten.

+0

mein Code erzeugt Zellen korrekt, wie in der Frage beschrieben - Aufruf reloadData wieder hilft nicht – refulgentis

+0

Könnten Sie Code der MenuItemsViewController-Methode, die eine Instanz von ItemViewController aktualisiert und lädt? – Kentzo

0

Wenn Sie ein Element in der ersten Tabellenansicht auswählen, sollte es einen neuen untergeordneten Ansichtscontroller erstellen und das NSManagedObject an das untergeordnete Element für die Population übergeben. Wenn Sie vom Client zurück zum übergeordneten Objekt wechseln, sollte das untergeordnete Objekt freigegeben werden. Ich vermute, dass Sie versuchen, den Child-View-Controller (basierend auf Ihrem Video) wiederzuverwenden, sonst würden Sie nicht auf dieses Problem stoßen.

Also lass uns anfangen. Kannst du bestätigen, dass du das tatsächlich tust? Wenn nicht, warum nicht?

Verwandte Themen