Ich füge einen übergeordneten Ansichtscontroller zu einem übergeordneten Ansichtscontroller hinzu, und alles funktioniert wie erwartet, außer dass die üblichen Rückrufe des untergeordneten Ansichtscontrollers nicht ausgelöst werden. zB Dinge wie viewWillAppear (animiert) werden nie aufgerufen. Ich schaute hinein und dachte, es könnte sein, weil ich nicht WillMoveToParentViewController und DidMoveToParentViewController auf der Kind-View-Controller vor bzw. nach dem Hinzufügen zu dem Eltern aufrufen. Leider hat das Reparieren keinen Unterschied gemacht. Weiß jemand, wie ich dies verdrahten kann, so dass, wenn ich addChildViewController und removeChildViewController die regelmäßigen Rückrufe ausgelöst werden? Nachdem ich den childViewController hinzugefügt habe, füge ich seine Ansicht auch als Unteransicht zur Ansicht des übergeordneten View-Controllers hinzu. An keinem Punkt (addChildViewController & amp; addSubview) werden die ViewVillAppear (animiert), usw. Methoden des Kind-Viewers aufgerufen ...
Nick
viewWillAppear , viewDIdAppear wird automatisch aufgerufen, wenn Sie Ihre ViewControl-Ansicht einer Ansichtshierarchie hinzufügen
viewWillDisappear , viewDidDisappear wird automatisch aufgerufen, wenn Sie Ihre ViewControl-Ansicht aus einer Ansichtshierarchie entfernen
Vielleicht werden diese Methoden nicht aufgerufen, weil Sie die Sub-Controller-Ansicht vor dem Anzeigen des Hauptansicht-Controllers hinzufügen, und deshalb ist Ihre Hauptansicht nicht in Sicht hiererchy selbst?
Wenn Ihr Hauptansicht-Controller erscheint oder verschwindet, sollten Sie diese Methoden für Childs in entsprechenden Methoden aufrufen.
Ich bin mir nicht sicher, ob dies auf Ihre Situation zutrifft, aber versuchen Sie, die Callback-Methoden für die Darstellung manuell an Ihre Kinder zu senden.
Aus der Sicht von Apple's Controller Containment Dokumentation :
Manchmal sendet das Standardverhalten diese Ereignisse jedoch möglicherweise in einem Reihenfolge, die für Ihren Container nicht sinnvoll ist. Zum Beispiel, wenn Mehrere Kinder wechseln gleichzeitig ihren Blickzustand Vielleicht möchten Sie die Änderungen so konsolidieren, dass die Erscheinung Rückrufe alle geschehen gleichzeitig in einer logischeren Reihenfolge. Um das zu tun, du Ändern Sie Ihre Container-Klasse, um die Verantwortung für das Erscheinungsbild zu übernehmen oder Rotationsrückrufe.
Es wird empfohlen, die Callbacks für die Darstellung manuell an Ihre untergeordneten Elemente weiterzuleiten, wenn Sie eine detailliertere Kontrolle wünschen:
%Vor%Sie können den ViewWillAppear des Kind-View-Controllers manuell in parectViewController aufrufen, Code wie folgt
%Vor%Wenn Sie einen navigationController als childViewController hinzugefügt haben, können Sie einen solchen Code in delegationController delegate
hinzufügen %Vor%Wenn Sie einen tabBarController als childViewController hinzugefügt haben, können Sie Code wie diesen in tabBarController's delegate und super view
hinzufügen %Vor%Ich weiß nicht, ob das dein Problem lösen kann, hoffe, dir helfen zu können.
Tags und Links ios childviewcontroller viewwillappear