7 Stimmen

Wie fügt man einen View-Controller richtig in die View-Hierarchie ein?

Ich habe einen Viewcontroller (A), der einen Viewcontroller (B) lädt und dessen Ansicht in meiner Ansichtshierarchie verwendet. Wenn ich die View von B zur View-Hierarchie von A hinzufüge und Ereignisse wie viewWillAppear nicht manuell weiterleite, kann ich sie im B-Controller nicht behandeln. (Aus den viewWillAppear: docs)

Warnung: Wenn die Ansicht, die zu einem View-Controller gehört, direkt in eine View Hierarchie hinzugefügt, wird der View Controller nicht diese Meldung. Wenn Sie einen View einfügen oder hinzufügen in die View-Hierarchie einfügen oder hinzufügen, und dieser hat einen View-Controller hat, sollten Sie die zugehörigen View-Controller diese Nachricht direkt senden. Wird die Nachricht nicht an den View-Controller diese Nachricht zu senden, wird verhindert, dass eine zugehörige Animation angezeigt wird.

Wie verschachtelt man Viewcontroller richtig? (Wie NavBarController tut es.) Wenn es nur eine Frage der Notwendigkeit, eine Gruppe von Ereignissen an den verschachtelten Controller weiterzuleiten ist, was sind alle Ereignisse, die ich weiterleiten müssen?

5voto

Matt Gallagher Punkte 14710

Hier gibt es keine Patentlösung. Die richtige Lösung besteht darin, diese Nachrichten manuell zu senden.

Die Nachrichten viewWillAppear:/viewDidAppear: und viewWillDisappear:/viewDidDisappear: sind die einzigen Nachrichten, die Sie manuell an den untergeordneten View-Controller senden müssen.

Sie sollten alle vier dieser Methoden im übergeordneten View-Controller implementieren und dieselbe Nachricht an den untergeordneten View-Controller senden, wenn der übergeordnete View-Controller die Nachricht empfängt und der untergeordnete geladen wird.

Außerdem sollten Sie beim Hinzufügen der View des untergeordneten View-Controllers die Nachrichten viewWillAppear:/viewDidAppear: senden, wenn das view.window des Elternteils nicht null ist. Wenn Sie die Ansicht entfernen, sollten Sie die Nachrichten viewWillDisappear:/viewDidDisappear: senden, wenn das view.window des Elternteils nicht null ist.

0 Stimmen

Ist dies immer noch der Fall und wenn ja, ist dies von Apple dokumentiert?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X