iPhone SDK-如何通过编程方式添加UINavigationController

7
我有一个iPhone项目,目前它没有UINavigationController。相反,我通过自己处理视图层次结构来交换视图。然而,正如您可能知道的那样,这是不好的做法,因此我正在尝试找出如何将UINavigationController实现到我的当前应用程序中。显然,我可以重新开始我的项目并使用Xcode模板,但我真的不想这样做。 必须有一种以编程方式完成这项工作的方法。但我无法弄清楚需要在AppDelegate中放置哪些代码。有没有人有这方面的经验?我暂时还没头绪。
干杯, Brett
6个回答

18

没错。

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{
   navController=[[UINavigationController alloc] init];
   MyViewController *firstController=[[MyViewController alloc] init];
   [navController pushViewController:firstController animated:NO];
   [window addSubview: navController.view];
} 
- (void) dealloc
{
   ...  
   [navController release];
   ...
}

这是一个非常常见的问题,也可以看看这个...... 以编程方式在UIViewController中添加UINavigationController


我认为你应该加上animated:yes。因为大多数情况下,我们希望在移动到新视图之前控制器进行动画。谢谢 :) - hqt

7
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];

// application.applicationIconBadgeNumber = 0;
navController=[[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];

1
在Xcode 4的界面编辑器中,打开初始视图控制器,然后选择“编辑器 > 嵌入 > 导航控制器”。

1

我在我的选项卡项目中添加了导航控制器,它完美地工作了。

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


UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];

UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];

UIViewController *viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease];

self.tabBarController = [[[UITabBarController alloc] init] autorelease];


self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3];


self.navigationController= [[UINavigationController alloc]initWithRootViewController:self.tabBarController];

// 将self.window.rootViewController设置为self.tabBarController;

self.window.rootViewController = self.navigationController;


[self.window makeKeyAndVisible];


return YES;

1

创建和释放导航控制器的示例:

UINavigationController *navCon = [[UINavigationController alloc] init];
[navCon pushViewController:yourViewController animated:NO];
[navCon release];

0

我使用这个方法解决了相同的问题。

 - (void)applicationDidFinishLaunching:(UIApplication *)application 
 {
      navController=[[UINavigationController alloc] init];
      MyViewController *firstController=[[MyViewController alloc] init];
      self.window.rootViewController = firstController;
      [self.window addSubview navController.view];

 } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接