Load a UINavigationController as a subview from UIViewController

XcoderMi2 picture XcoderMi2 · May 1, 2009 · Viewed 21.1k times · Source

I am a newbi in iPhone development.I want to build an app which will have a UIViewController first , which will have a button.Now on clicking the button, it shud load a UINavigation controller. Here is how i m approaching :

  1. i created a UIViewController class, where i took a

    -(IBAction) PressMeFunc:(id) sender
    

    for the button to be pressed.

  2. Then i created a UIView xib file.I did the required steps in the IB.

  3. Then in the AppDelegate, i added the ViewController's instance as a Subview of the window.

Upto this it is OK.

Next, how do i load a navigationcontroller on the press of the button?

I know how to build a navigationController project from window-based app, but i am having a tough time doing NavigationController as a subview of UIView.

Your help is much appreciated.

Answer

Mark Bessey picture Mark Bessey · May 1, 2009

The NavigationController is designed to take over the screen when it's used, so you have to decide how to manage the transition to the NavigationController from your original ViewController. You can do this with presentModalViewController, or by handling removing your original view and swapping the NavigationController in programatically.

Here's the Apple documentation for setting up a NavigationController programatically.

The code is going to look something like this (from Apple's doc):

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:groupsController];

Now, once you've created the NavigationController, and added its first viewcontroller to it, you need to transition to it. You can do that with CATransitions, or with

[myViewController presentModalViewController: navigationController];