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的主要内容,如果未能解决你的问题,请参考以下文章
通过 Facebook iOS Sdk iphone 以编程方式对新闻提要进行喜欢/评论
如何以编程方式检测音符和和弦(在 iPhone SDK 中)?