用于监视视图控制器的viewDidAppear何时执行的观察者

问题摘要

UINavigationControllerDelegate:didShowViewContoller可以在任何视图控制器显示时(而不是被加载)获得通知,前提是它位于导航堆栈的上下文中。 我想知道如果没有导航堆栈,是否可以对所有视图控制器进行这样的观察。

更多背景

我有一个应用程序,视图控制器可以突然出现基于计时器和本地通知触发,因此它们的外观实际上是随机的。

如果一个VC触发并在另一个VC显示的过程中同时显示,则可能存在问题(如果您有iOS经验,您将意识到一个VC是否从其viewDidLoad中推送另一个VC,而不是比它的viewDidAppear你会得到一个“试图在Y上呈现X,其视图不在窗口层次结构中”错误)

我如何解决这个问题是我有一个要显示的VC列表,它们由一个视图控制器协调器显示,该协调器实现UINavigationControllerDelegate的didShowViewContoller,并且在调用didShowViewController之前不显示新的VC。

这非常有效。

但现在我的问题是我想为不使用导航控制器的应用程序做类似的事情,因此我不能使用UINavigationControllerDelegate:didShowViewController在显示视图控制器时全局观察。 有没有人知道这样做的另一种优雅机制?