Using the UINavigationController as the rootViewController is a good way to create an iOS application.
How do I understand the elements of an unwanted view - is it a navigationBar? You can simply hide it manually by setting:
[self.navigationController setNavigationBarHidden:YES]
And about your case, if you want to change the current viewController (targeting on iOS 6), you can just introduce a new one:
[self presentViewController:login animated:YES completion:nil];
or add a child ( Here is a good example to add and remove a child) :
[self addChildViewController:login]
Why set UINavigationController as root?
1) First of all, it makes your application visible viewcontrollers well structured. (This is especially necessary on the iPhone). You can always get the stack and pop (or move) to any desired viewController.
2) Why do I always make navigation as root, because it makes the application more supportable , so it will not need so many code changes to add some features to the application.
If you create one (root) viewcontroller with a lot of children or imagine other viewcontrolls, this will make your code very difficult to support and will make something like a gode object.
source share