- Viewcontroller A, die Viewcontroller B
- Viewcontroller B hat keinen Hinweis auf Viewcontroller A (außer implizit die
presentingViewController
Eigenschaft) - Viewcontroller B ruft
dismiss
auf sich selbst präsentiert und tut nichts sonst
Was ich will, erreichen:
- Viewcontroller A wissen will, wenn Viewcontroller B um einige Zustand
Einschränkungen aufzuräumen entlassen wurde:
- Ich will nicht KVO verwenden
- Ich möchte ViewController B oder sein Verhalten in keiner Weise ändern
Was ich bisher herausgefunden:
dismiss(animated:completion:)
according to the documentation leitet den Anruf an seinepresentingViewController
. Aber wie es scheintdismiss(animated:completion:)
ist nicht genannt, sondern eine private Methode_performCoordinatedPresentOrDismiss:animated:
.- iOS documentation on
presentingViewController
ist irreführend. Es besagt, dass "der View-Controller, der präsentiert wurde, diese Eigenschaft auf den View-Controller eingestellt hat, der ihn präsentierte", aber das stimmt nicht. In iOS 11 verweist dies immer auf die Stammeltern-VC des VC, derpresent
aufgerufen wurde. Ähnlich ist die documentation onpresentedViewController
irreführend. Es besagt, dass "der View-Controller, der die Methode aufgerufen hat, diese Eigenschaft auf den View-Controller gesetzt hat, den sie präsentiert hat", das ist nicht die ganze Geschichte. Jedes VC in der Hierarchie des VC (alle übergeordneten VCs und untergeordneten VCs), diepresent
aufgerufen haben, zeigt auf dasselbepresentedViewController
.
Vielleicht Senden einer Benachrichtigung in 'viewWillDisappear' oder' viewDidDisappear' von ViewController B? – Koen
Leider kann ich B nicht ändern. Ich könnte es in ein containerVC wickeln, wie ich in der Antwort unten beschrieben habe, aber nicht sehr nett – fabb
Oder Unterklasse es? – Koen