I'm using a storyboard and I'm trying to hide a top bar of my main navigation controller when a certain button is pressed (or function is called). I know I have to initialize an object referring to a navigation controller from a storyboard (using identifiers), but when I send the setNavigationBarHidden message to this newly created object nothing really happens on screen.
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UINavigationController *navController = (UINavigationController*) [storyboard instantiateViewControllerWithIdentifier:@"MyNavController"];
[navController setNavigationBarHidden:YES animated:YES];
Does anyone know what the problem is?
Finally solved it. You should always hide navigation bar only through viewController.
In my question above I instantiated a whole new navigationController which didn't point at the real navController on the screen. You can obtain the "real" one through the view controller like this:
[viewController.navigationController setNavigationBarHidden:YES animated:YES];
There are 2 ways to hide top bar of Navigation Controller:
1) Programatically
[self.navigationController setNavigationBarHidden:YES animated:YES];
2) Using Interface Builder
You can uncheck "Shows Navigation Bar" in property list of Navigation Controller.
Please make sure you have selected scene which contain Navigation Controller. Example image of scene.
in swift 4:
self.navigationController!.navigationBar.isHidden = true
something like this:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController!.navigationBar.isHidden = true
}
I faced same problem, this worked for me
navController.navigationBar.hidden = YES;
The answers are correct. Just want to add that you probably want to put back the navigation bar when leaving the view as other views might use it and when you hide for one its hidden for all.
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.isHidden = true
}
and before you leave the view:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.isHidden = false
}
`
In Xamarin.iOS
base.NavigationController.NavigationBarHidden = true;
I hide my Navigation bar by unchecking Bar Visibility "Shows Navigation Bar" In Attribute Inspector.Hope this help someone.
SetRoot RootViewController after Changing the Properties.
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// Create Navigation controller with RootViewController
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[storyBoard instantiateViewControllerWithIdentifier:@"MyRootViewController"]];
Setting RootViewController
[appDelegate.window setRootViewController: navController];
or else you Can Do in any ViewController
[self.navigationController setNavigationBarHidden:YES animated:YES];