How to replace RootViewController in "Navigation-based application" How to replace RootViewController in "Navigation-based application" xcode xcode

How to replace RootViewController in "Navigation-based application"


if you want to replace the root view controller of your navigation stack you can replace the first object of its view controllers array as -

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[self.navigationController viewControllers]];NewViewController *nvc = [[NewViewController alloc] init];[viewControllers replaceObjectAtIndex:0 withObject:nvc];[self.navigationController setViewControllers:viewControllers];


^ These are all ways to do it programmatically. Thats cool. But I use the interface builder and storyboards in Xcode, so this is the easy and fast way to add a new view controller:

  • Open the storyboard in question
  • Add a new view controller to your storyboard by dragging it from the objects list (right hand tool bar bottom)
  • While holding down the CONTROL key, click and drag from the middle of your navigation controller (should be blank and gray) to your new fresh white view.
  • On the popup, selection Relation Segue: Root View Controller (should be below the normal push/modal/custom options you have likely seen before)

Tada! Enjoy your new root view controller without holding your day up with programmatic creation.


Look inside the main app delegate .m file and find the method

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

Inside it will be a line like this

self.window.rootViewController = self.navigationController;

You can instantiate a diffent view controller there and assign it to be the rootViewController