iPhone SDK - 以编程方式添加 UINavigationController

Posted

技术标签:

【中文标题】iPhone SDK - 以编程方式添加 UINavigationController【英文标题】:iPhone SDK - Add a UINavigationController Programmatically 【发布时间】:2011-11-15 00:13:31 【问题描述】:

我有一个 iPhone 项目,目前其中没有 UINavigationController。相反,我通过自己处理视图层次结构来交换视图。但是 - 正如您可能知道的那样 - 这是不好的做法,所以我试图弄清楚如何在我当前的应用程序中实现 UINavigationController。我显然可以重新开始我的项目并使用 Xcode 模板,但我真的不想这样做。

一定有办法以编程方式执行此操作。但我无法弄清楚 AppDelegate 中需要哪些代码。有人对这个有经验么?我现在很茫然。

干杯, 布雷特

【问题讨论】:

【参考方案1】:

是的。

- (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];
   ...

这是一个很常见的问题,也看看这个...... Programmatically add UINavigationController in UIViewController

【讨论】:

我认为你应该把动画:是的。因为大部分时间。我们希望控制器动画在移动到新视图之前。谢谢:)【参考方案2】:
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];

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

![我将导航控制器添加到我的标签栏项目中,它运行良好

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;

【讨论】:

【参考方案6】:

我用这个解决了同样的问题。

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

  

【讨论】:

以上是关于iPhone SDK - 以编程方式添加 UINavigationController的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone sdk 中以编程方式获取设备名称?

通过 Facebook iOS Sdk iphone 以编程方式对新闻提要进行喜欢/评论

如何以编程方式检测音符和和弦(在 iPhone SDK 中)?

如何在 iPhone SDK 中使用自定义字体? [复制]

将右 barbuttonitem 添加到导航控制器 iphone sdk 后视图向上移动

以编程方式关闭 iPhone?