如何确定哪个视图控制器当前处于活动状态/显示视图的控制器?

在我的应用程序中,我正在排队一些本地通知,当他们开火时,我必须提供一个模态视图。 麻烦的是我有无数的视图控制器,其中任何一个当前可以是活动的,因此需要呈现模态视图控制器。 我如何确定当前正在使用哪一个?

我正在设置一个导航控制器作为Windows根视图控制器,这可以推动任何数量的其他视图控制器,其中一些本身也可能当前呈现另一个视图控制器模态。 这必须在iOS 4和5上运行。

我有很多的视图控制器,所以想避免把代码放在每个检查他们是否目前是最高的一个。

您可以查看导航控制器的topViewController属性,找出哪个控制器位于堆栈顶部。 这将是其视图显示的人。

既然你也可能正在呈现一个模式化的视图控制器,你可能会对visibleViewController属性更感兴趣,它会给你当前视图的控制器,无论它是模态呈现还是推送到导航堆栈上。

创build一个variables来存储指向最近被推送的ViewController的指针。 每次你推新的ViewController,更新这个variables。 那么你一定会知道哪一个在顶端!