Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Load a UINavigationController as a subview from UIViewController

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.

like image 780
XcoderMi2 Avatar asked May 01 '09 13:05

XcoderMi2


1 Answers

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];
like image 98
Mark Bessey Avatar answered Sep 24 '22 13:09

Mark Bessey