3

在创建我的第一个 iPhone 应用程序的过程中,我注意到来自 Apple 的示例要么有标签栏,要么有导航栏,但从来没有两者兼有。

是否有可能做到这一点?

所以我这里有一个带有 3 个按钮的标签栏,我现在如何将导航控制器添加到我的整个应用程序中?

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

UIViewController *activityViewController = [[[ActivityViewController alloc] initWithNibName:@"ActivityViewController" bundle:nil] autorelease];
UIViewController *agendaViewController = [[[AgendaViewController alloc] initWithNibName:@"AgendaViewController" bundle:nil] autorelease];
UIViewController *settingsViewController = [[[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil] autorelease];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:activityViewController, agendaViewController, settingsViewController, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];

编辑:

我真的没有关注,所以在我的 appdelegate 中我创建了一个 navigationController 并将其用作 rootViewController。

然后我创建了一个 tabBarController 并将其添加到我的窗口中

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

UINavigationController *mainViewController = [[UINavigationController alloc] init];
self.mainViewController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
self.window.rootViewController = self.mainViewController;
[self.window makeKeyAndVisible];

self.window.rootViewController.title = @"test";

MainViewController *tabBarController = [[MainViewController alloc] init];
[self.window addSubview:tabBarController.view];

但是每当我运行时,我都会收到错误”

不支持推送导航控制器

我还缺少什么吗?

4

2 回答 2

0

嘿,这在概念上很容易:

您的 rootViewController 必须是您的 navigationController,因为它来回推动您的视图。

YourRootController *cont = [[YourRootController alloc] init];

UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:cont];

YourViewController的子类在哪里UITabBarController

而已。

于 2012-05-03T11:54:11.720 回答
0

您可以创建一个导航控制器,然后创建一个 tabBarController 并将您的导航控制器添加到它使用

 //incase you have 2 navigation controllers
 tabBarController.viewControllers=[NSArray arrayWithObjects:navigationController1, navigationController2, nil ];
于 2012-05-03T11:49:05.227 回答