我在视图之间进行基本导航时遇到了一些麻烦。我有一个tabBarController有两个视图。在第一个视图控制器中,当响应按下按钮的方法被调用时,self.navigationController为null。调试器逐步执行代码,但模拟器中的屏幕不会更改。我在viewController按钮响应方法中有以下代码:
FooViewController *fvc = [[FooViewController alloc] initWithNibName:@"FooViewController" bundle:nil];
[self.navigationController pushViewController:fvc animated=YES];
在MyAppDelegate.m实现的didFinishLaunchWithOptions方法中,我正在创建一个UINavigationController并使用UIViewController实例作为Root View Controller进行初始化,其代码如下:
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: viewController1];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
我目前的理解是initWithRootViewController变量应该将UINavigationController对象绑定到viewController1。我究竟做错了什么?!? 任何想法,建议或智慧的珍珠都将不胜感激。
非常感谢,
-Munk
答案 0 :(得分:2)
是initWithRootViewController
确实绑定了导航,但是在标签栏中你应该设置UINavigationController
而不是ViewController
本身
更改此行
self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1, viewController2, nil];
到
self.tabBarController.viewControllers = [NSArray arrayWithObjects: nav, viewController2, nil];
此外,您似乎也有拼写错误
[self.navigationController pushViewController:fvc animated=YES];
将其更改为
[self.navigationController pushViewController:fvc animated:YES];