如何获取当前UINavigationController的引用?

时间:2013-01-25 20:26:06

标签: objective-c cocoa

在Objective-C中,获取对当前UINavigationController的引用的最佳方法是什么?我想从任何可能没有引用UIController,委托或其他任何类的类中获取它。

是否有现成的方法来获取当前的UINavigationController?我应该向我的应用程序委托添加一些东西,并检索它吗?

2 个答案:

答案 0 :(得分:33)

事实证明,你可以从任何UIView / UIViewController后代获得它,尽管有相当多的点语法。

self.(view).window.rootViewController.navigationController;

如果您使用的是来自任何其他类的对象,则情况也是如此,除非您必须通过UIApplication

[UIApplication sharedApplication].keyWindow.rootViewController.navigationController;

当然,这两者都会大大打破MVC,并且绝对建议将必须触摸“默认导航控制器”的任何逻辑添加到根视图控制器中。

答案 1 :(得分:3)

Swift 4:

guard let navigationController = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController else { return }