iPhone SDK-以编程方式添加UINavigationController
我有一个iPhone项目,目前没有iPhone SDK-以编程方式添加UINavigationController,iphone,objective-c,Iphone,Objective C,我有一个iPhone项目,目前没有UINavigationController。相反,我通过自己处理视图层次来交换视图。然而,正如您可能知道的那样,这是一种糟糕的做法,因此我正在试图找出如何在我当前的应用程序中实现UINavigationController。显然,我可以重新开始我的项目并使用Xcode模板,但我真的不想这样做 必须有一种方法可以通过编程实现这一点。但我无法确定AppDelegate中需要哪些代码。有没有人有这方面的经验?我现在不知所措 干杯, Brett在Xcode 4的界面编
UINavigationController
。相反,我通过自己处理视图层次来交换视图。然而,正如您可能知道的那样,这是一种糟糕的做法,因此我正在试图找出如何在我当前的应用程序中实现UINavigationController
。显然,我可以重新开始我的项目并使用Xcode模板,但我真的不想这样做
必须有一种方法可以通过编程实现这一点。但我无法确定AppDelegate中需要哪些代码。有没有人有这方面的经验?我现在不知所措
干杯,
Brett在Xcode 4的界面编辑器中,打开初始视图控制器,然后选择 “编辑器>嵌入>导航控制器”Yeap
- (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];
...
}
这是一个很常见的问题,看看这个。。。。
创建和释放导航控制器的示例:
UINavigationController *navCon = [[UINavigationController alloc] init];
[navCon pushViewController:yourViewController animated:NO];
[navCon release];
我用这个解决了同样的问题
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
navController=[[UINavigationController alloc] init];
MyViewController *firstController=[[MyViewController alloc] init];
self.window.rootViewController = firstController;
[self.window addSubview navController.view];
}
!![我在我的选项卡栏项目中添加了导航控制器,它工作得非常好
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;
我认为你应该放动画:是的。因为大多数时候。我们希望控制器在移动到新视图之前制作动画。谢谢:)
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;