获取对当前可见视图控制器的引用
Posted
技术标签:
【中文标题】获取对当前可见视图控制器的引用【英文标题】:Get a reference to the currently visible view controller 【发布时间】:2013-08-19 12:14:59 【问题描述】:我有一个UIAlertView
。当用户点击警报视图中的按钮时,我想显示一个新的UIViewController
。
为了实现这一点,我需要知道哪个视图控制器当前在屏幕上可见,因为那个特定的视图控制器是展示新视图控制器的正确选择。
问题是我的应用中有一个复杂的视图控制器层次结构,包括UINavigationController
和UITabBarController
(等等)。所以我不能简单地使用self.visibleViewController
来获取当前可见的视图控制器。
我找到了possible solution on ***,但我想找到一个更简洁的解决方案,而不必深入研究整个视图控制器堆栈。
【问题讨论】:
我不确定这是否有效,我还没有测试过,但是如果你正在创建一个 UIAlertView 并在最后一个可见的 UIViewController 中呈现它,这并不意味着“委托" 那个 UIAlertView 是你最后一个可见的视图控制器? 我有点困惑。您必须在某处设置 UIAlertView 的代码。你在哪个 ViewController 上设置了?UIAlertView
的代表不一定是UIViewController
。它可以是任何符合UIAlertViewDelegate
协议的类。在我的例子中,代表实际上是一个UIViewController
,但它是一个特定的,并不总是可见的。
@Puneet:UIAlertView
不一定由特定的UIViewController
提供。相反,我使用[alertView show]
。我可以从代码中的任何位置调用该方法,因为 UIAlertView always creates its own window.
【参考方案1】:
UINavigationController
有一个名为topViewController
的属性。
也许对你有帮助。
【讨论】:
我需要一个不依赖于视图控制器类型的解决方案。以上是关于获取对当前可见视图控制器的引用的主要内容,如果未能解决你的问题,请参考以下文章