sujay
sujay

Reputation: 1845

how to add uinavigation controller in a view based application

I wanted to add a navigation controller to a view based application . how can we do this both programmatically and using xib file..

Upvotes: 2

Views: 776

Answers (4)

visakh7
visakh7

Reputation: 26400

If you want to have a navigation controller as the root view for your main window. Then you can do so by using the following code.

@interface yourAppDelegate_iPad : NSObject <UIApplicationDelegate> {
    UINavigationController *navigationController;
}

@property (nonatomic, retain) UINavigationController *navigationController;

@end

@implementation yourAppDelegate
@synthesize navigationController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {


    navigationController = [[UINavigationController alloc] initWithRootViewController:yourRootViewController];
    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];
    return YES;
}

You can do this by using the xib as follows

  1. Open the MainWindow.xib
  2. Drag and drop a UINavigationController to it.
  3. Create and connect the outlets.
  4. Open attributes for the navigation controller and set the root view.

Upvotes: 0

Alvise Susmel
Alvise Susmel

Reputation: 36

If you need to incorporate a navigation controller in your uiviewcontroller you need to initialize it as it follows

UIViewController *yourViewController = ...

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:yourViewController];

[self presentModalViewController:navController animated:YES];

//you need to release the controller
[navController release];

If you are in the UIApplicationDelegate method

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

You can't do a presentModalViewController:navController animated... then you need to add the navController.view to the window

    UIViewController *yourViewController = ...

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:yourViewController];
    [self.window addSubview:navController.view];
    //don't do a release of navController because is not retained by addSubview

Upvotes: 2

Tobias Tovedal
Tobias Tovedal

Reputation: 731

You can just drag a "Navigation Bar" from your objects in the bottom right corner of Interface Builder. This basically does what Sachin says in his answer but you still have to programmatically create the functionality of the navigation controller. I.e pushing new views to the stack and poping them off.

In my opinion it's easiest to do it entierly in the code.

Upvotes: 0

Tendulkar
Tendulkar

Reputation: 5540

UINavigationController *navcontroller = [[UINavigationController alloc] initWithRootViewController:viewController];//here viewController is to which you want to make the navigation

[self.view addSubView:navController.view];

Upvotes: 0

Related Questions