【问题标题】:Navigation controller is nil in the second view controller导航控制器在第二个视图控制器中为零
【发布时间】:2015-11-23 19:45:19
【问题描述】:

所以我设置了 AppDelegate 来加载具有导航控制器的根视图 vc:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
SecondViewController *vc = [[SecondViewController alloc] init];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:vc];
[self.window makeKeyAndVisible];
return YES;

在我的 SecondViewController 中,我有一个方法可以调用 push 来呈现第三个视图控制器:

ThirdViewController *thirdVC = [[ThirdViewController alloc]init];
[self.navigationController pushViewController: thirdVC animated:YES];

虽然这不起作用。仔细检查后,SecondViewController 上的 self.navigationController 属性为零。我在 AppDelegate 上是否遗漏了一些东西来使这个非零?

【问题讨论】:

  • 尝试单独设置导航控制器并用视图控制器初始化,并使其成为根视图!

标签: ios objective-c xcode uinavigationcontroller


【解决方案1】:

尝试这个,因为我遇到了同样的问题,但我通过在项目的自定义类标题下设置相同的类名和 Storyboard ID 名称来解决它。

registerViewController *regVC = [self.storyboard instantiateViewControllerWithIdentifier:@"registerViewController"]; [self.navigationController pushViewController:regVC 动画:YES];

【讨论】:

    【解决方案2】:

    试试这个:

    SecondViewController *vc = [[SecondViewController alloc] init]; 
    UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:vc];
    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
    

    无需在应用委托中将根视图控制器设为 nil。

    【讨论】:

    • 我已经尝试过了,但它不起作用。我的意思是 self.navigationController 似乎为零,不知道为什么。
    • 您尝试以编程方式将导航控制器添加到 VC,或者您的 VC 在情节提要中有导航控制器吗?@user1686342
    • 我没有情节提要,我已经使用 XIB 以编程方式添加了
    • 嗯,我已经在上面分享了
    • 你在哪里调用第二个 VC 中的推送代码?
    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多