在 Objective-C 中,获取对当前 UINavigationController 的引用的最佳方法是什么?我想从任何可能没有对 UIController、委托或其他任何内容的引用的类中访问它。
是否有现有的方法来获取当前的 UINavigationController?我应该向我的应用程序委托添加一些东西并检索它吗?
在 Objective-C 中,获取对当前 UINavigationController 的引用的最佳方法是什么?我想从任何可能没有对 UIController、委托或其他任何内容的引用的类中访问它。
是否有现有的方法来获取当前的 UINavigationController?我应该向我的应用程序委托添加一些东西并检索它吗?
事实证明,您可以从任何 UIView/UIViewController 后代中获取它,尽管使用了相当多的点语法。
self.(view).window.rootViewController.navigationController;
如果您使用的是从任何其他类派生的对象,则同样如此,除非您必须通过UIApplication
[UIApplication sharedApplication].keyWindow.rootViewController.navigationController;
当然,这两者都在很大程度上破坏了 MVC,并且绝对建议将任何必须触及“默认导航控制器”的逻辑添加到根视图控制器中。
斯威夫特 4:
guard let navigationController = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController else { return }