【问题标题】:Objective C: How to get navigation controller from ViewController behind my current ViewController目标 C:如何从当前 ViewController 后面的 ViewController 获取导航控制器
【发布时间】:2016-07-11 18:27:51
【问题描述】:

我有带有导航控制器的 ViewController 1,我想在其中推送其他一些 VC。但是我有 ViewController 2 在它上面而不是在导航控制器层次结构中。

在 ViewController 2 中,我有一些方法可以将其最小化,但我无法到达 ViewController 1 中的导航控制器以将其他 VC 推到那里。我试图用代码从窗口中做到这一点:

UITabBarController *mTabBarVC = (UITabBarController *) [UIApplication sharedApplication].keyWindow.rootViewController;
UINavigationController *prevNavigationController = myTabBarVC.selectedViewController.navigationController;

但我没有成功,我在 prevNavigationController 中得到了 nil。

【问题讨论】:

  • 什么显示 NSLog (@"%@", mTab​​BarVC) ?
  • 和 NSLog (@"%@", myTabBarVC.selectedViewController) ?
  • 检查,如果keyWindow.rootViewController真的是UITabBarController,而不是另一个控制器
  • 如何在 ViewController 1 上呈现 ViewController 2?模态,还是通过添加子视图?

标签: ios objective-c uiviewcontroller uinavigationcontroller hierarchy


【解决方案1】:

在 ViewController 2.h 中创建:

@property UIViewController *parent;

在 ViewController 1 中传递自我:

viewController2.parent = self;

在 ViewController 2 中,您现在可以获得 UINavigationController:

UINavigationController *navVC = self.parent.navigationController;

这是最好的方法,因为您将来可以更改视图控制器的结构并且会遇到错误。

如果 ViewController 2 以模态方式存在于 ViewController 1 上,您可以在 self.presentingViewController 属性中从 VC2 获取 VC1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多