如何确定当前活动的视图控制器/显示视图的视图控制器?

4
在我的应用程序中,我正在排队一些本地通知,当它们触发时,我必须呈现一个模态视图。问题是我有许多视图控制器,任何一个都可能当前处于活动状态,因此需要呈现模态视图控制器的那个。如何确定哪个视图控制器当前在使用?
我将导航控制器设置为窗口的根视图控制器,它可以推送任意数量的其他视图控制器,其中一些也可能当前正在以模态方式呈现另一个视图控制器。这必须在iOS 4和5上工作。
我有很多视图控制器,所以希望避免在每个视图控制器中放置代码来检查它们当前是否为顶部视图控制器。

你可能需要重新考虑你的设计,如何让所有的视图控制器都继承自一个父控制器...这样无论你在哪里,你的父控制器都能够从任何地方显示一个模态视图。 - TeaCupApp
2个回答

9
你可以查看导航控制器的 topViewController 属性,以找出堆栈顶部的控制器。这将是显示视图的控制器。
由于可能还会呈现模态视图控制器,因此您可能更感兴趣的是 visibleViewController 属性,它将为您提供当前视图的控制器,无论其是以模态方式呈现还是推送到导航堆栈中。

0
创建一个变量,用于存储最近被推送的ViewController的指针。每次推送新的ViewController时,更新这个变量。这样,你就能始终知道哪个ViewController在顶部了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接