在Objective-C中,获取对当前UINavigationController的引用的最佳方法是什么?我想从任何可能没有引用UIController,委托或其他任何类的类中获取它。
是否有现成的方法来获取当前的UINavigationController?我应该向我的应用程序委托添加一些东西,并检索它吗?
答案 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 }