鉴于:
- 呈现 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
.