I have an iPhone project which currently does not have a UINavigationController
in it. Instead I swap views by handling the view hierarchy myself. However - as you're probably aware - this is bad practice, so I am trying to figure out how to implement a UINavigationController
into my current app. I can obviously start my project over and use an Xcode template, but I really don't want to do this.
There must be a way to do this programmatically. But I can't figure out what code needs to go in the AppDelegate. Does anyone have any experience with this? I am at a loss at the moment.
Cheers,
Brett
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];
...
}
It's a quite common question, have a look at this too....
Programmatically add UINavigationController in UIViewController
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];
in Xcode 4 in the interface editor, open the initial view controller, and then select
'editor > embed in >navigation controller'
example of creating and releasing a navigation controller:
UINavigationController *navCon = [[UINavigationController alloc] init];
[navCon pushViewController:yourViewController animated:NO];
[navCon release];
![I added navigation controller into my tab bar project and it is working perfectly
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;
I resolved the same problem using this.
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
navController=[[UINavigationController alloc] init];
MyViewController *firstController=[[MyViewController alloc] init];
self.window.rootViewController = firstController;
[self.window addSubview navController.view];
}