Frage

Ich habe eine problemetic UITableViewController nicht eine aktualisierte Zelle neu zu ziehen, nachdem ein Kind Ansicht entfernt wird.

Hier ist, was passiert. Nachdem die Daten in einer untergeordneten Ansicht zu ändern, die Eltern-View-Controller Reloads den Quelldaten-Array und läuft [Tableview reload] über eine PostNotification. Nach diesem Trigger, verwende ich popViewControllerAnimated an die Mutter zurückzukehren UITableViewController (dies erscheint das Kind Blick vom Stapel, und zeigt die Steuerung einer Ebene nach oben).

Allerdings ist meine aktualisierte Daten erscheinen nicht in den übergeordneten View-Controller! Nach dem Debugger hat die Zelle Label aktualisiert worden, aber die sichtbare Markierung ändert sich nicht. Allerdings, wenn ich scrollen Schlägt die Tabelle, für einen Moment der aktualisierte Zelle aus dem Blickfeld zu bewegen, wenn es erscheint wieder das Etikett aktualisiert wird!

Ich versuche auch, ruft [Tableview reload] über viewWillAppear , aber das Problem noch weiter besteht.

Hier finden Sie einige zusätzliche Informationen, die hilfreich sein können. Ich habe eine 3 Ansichten wie folgt strukturiert:

1/  SettingsViewController : UITableViewController
2/  -- UserView : UITableViewController
3/  ---- UserDetailsView : UIViewController <UIActionSheetDelegate>

Ich rufe UserDetailsView von innen Userview wie folgt:

 UserDetailsView *userDetailsView = [[UserDetailsView alloc] init];
 [self.navigationController pushViewController:userDetailsView animated:YES];

Wenn ich auf den meist Top-Controller (SettingsViewController) zurückzukehren und lade dann die problematischen Controller (Userview), ist alles korrekt gezeichnet. Es ist nur, wenn sie von einer untergeordneten Ansicht zurückkehrt, dass dieses Problem auftritt.

Vielen Dank im Voraus für Ihre Anregungen.

War es hilfreich?

Lösung

arbeitete schließlich diesen heraus nach etwa einer Stunde gepaart Codierung.

Nach einer Weile Wir haben festgestellt, dass Tableview war immer null , wenn wir die reload Nachricht gesendet hat. Wie Sie in Objective C kennen können, akzeptieren null Objekte jede Nachricht ohne Beanstandung.

Es stellt sich heraus, dass „jemand“ (ähem, sorry dass ich es war) diese Zeile in der Header-Datei definiert hatte.

 UITableView *tableView;

Jetzt können Sie Smart Cookies da draußen wissen, dass, weil wir UITaleViewController erweitern, wir nicht einen Zeiger auf Tableview selbst machen müssen . In der Tat hatte ich das geerbte Tableview Element mit einem Null-Objekt ersetzt.

Rätsel gelöst. Hoffentlich hilft dies jemand anderes auch da draußen! : D

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top