鉴于:
- 呈现 ViewController B 的 ViewController A
- ViewController B没有对 ViewController A 的引用(除了隐含的
presentingViewController属性) - ViewController B 调用
dismiss自身,不执行任何其他操作
我想要达到的目标:
- ViewController A 想知道 ViewController B 何时被解雇以清理某些状态
限制:
- 我不想使用 KVO
- 我不想以任何方式修改 ViewController B 或其行为
到目前为止我发现了什么:
dismiss(animated:completion:)根据文档将调用转发到其presentingViewController. 但似乎没有dismiss(animated:completion:)被调用,而是一个私有方法。_performCoordinatedPresentOrDismiss:animated:- iOS文档
presentingViewController具有误导性。它说“呈现的视图控制器将此属性设置为呈现它的视图控制器”,但事实并非如此。在 iOS 11 中,这将始终指向present被调用的 VC 的根父 VC。同样,文档presentedViewController具有误导性。它说“调用该方法的视图控制器将此属性设置为它呈现的视图控制器”,这不是全部。调用的 VC(其所有父 VC 和子 VC)层次结构中的每个 VC 都present将指向同一个presentedViewController.