0

我在视图之间的基本导航方面遇到了一些麻烦。我有一个带有两个视图的 tabBarController。在第一个视图控制器中,当调用响应按钮按下的方法时,self.navigationController 为空。调试器逐步执行代码,但模拟器中的屏幕没有改变。我的 viewController 按钮响应方法中有以下代码:

FooViewController *fvc = [[FooViewController alloc] initWithNibName:@"FooViewController" bundle:nil];
[self.navigationController pushViewController:fvc animated=YES];

在 MyAppDelegate.m 实现的 didFinishLaunchWithOptions 方法中,我正在创建一个 UINavigationController 并使用 UIViewController 的实例将其初始化为根视图控制器,代码如下:

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。我究竟做错了什么?!?任何想法、建议或智慧的珍珠都将不胜感激。

非常感谢,

-芒克

4

1 回答 1

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];
于 2012-06-17T14:59:23.150 回答