Frage

Wie kann ich ein Setup-View-Controller die Felder in der Ansicht aktualisieren nur auf einer Navigationssteuerung und gibt die Objekte gedrückt wird, wenn es von Navigationssteuerung Ansichten geknallt wird.

Mein Ziel ist es, dass für einen View-Controller:

  1. Aktualisieren Anzeige nur, wenn es auf dem Navigationscontroller Stapel gedrückt wird
  2. Veröffentlichungen Daten, wenn es aus dem Navigationscontroller Stapel geknallt
  3. Wiederverwendung der Controller so viel wie möglich (xib Dateien Laden / Entladen-Overhead zu beseitigen)

Gibt es Delegatmethoden für viewWillBePushed: und viewWillBePopped:?

Beispiel

Lassen Sie uns sagen, ich habe drei Schichten der Ansichten:

Movies (MovieListController)
   --> Movie Basic Info (MovieInfoController)
        --> Movie Credits (MovieCreditsController)

Angenommen wir eine Klasse Movie haben jeden Film darzustellen.

Hier mag ich nur drei UIViewControllers haben, eine Instanz von jedem in der Laufzeit des Programms. So kann ich die gleiche MovieInfoController für verschiedene Filme wiederverwenden und in ähnlicher Weise MovieCreditsController.

Allerdings würde ich wie MovieInfoController auch nur in seine Ansicht Felder (zum Beispiel Titel, Erscheinungsdatum, usw.) nur aktualisieren, wenn sie auf dem Stapel geschoben wird. Die Umsetzung der Anzeige in viewWillAppear wird es zwingen Felder selbst zu aktualisieren, wenn MovieCreditsController geknallt wird.

Außerdem mag ich MovieInfoController seine Referenz veröffentlichen Movie, wenn es umgestülpt worden ist, und jedes potenziell großes Objekt (z Titelbild). diese Logik in viewWillDisappear Die Umsetzung wird dazu führen, dass die Daten freizugeben, wenn es MovieCreditsController auf den Stapel schiebt.

Gibt es sinnvoll? Bin ich es in die falsche Richtung gehen?

War es hilfreich?

Lösung

Sie sind 90% gibt, weil Sie ein Film-Objekt erstellt. MovieListController sollte einen einzigen MovieInfoController besitzen. Es sollte -setMovie: nennen, bevor es auf die Navigationssteuerung zu drücken. Der Aufruf von -setMovie: sollte sein, welche Updates Ihre Felder aus.

In ähnlicher Weise MovieInfoController ein einzelnes MovieCreditsController besitzen sollte, und sollte -setMovie: auf ihn, bevor er auf die nav-Controller drücken.

nennen

In MovieListController und MovieInfoController können Sie [subController setMovie:nil] in ihren -viewDidAppear: rufen Speicher freizugeben.

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