Storyboard - Hiding top bar of navigation controll

2019-01-31 19:11发布

问题:

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?

回答1:

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];


回答2:

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.



回答3:

in swift 4:

self.navigationController!.navigationBar.isHidden = true

something like this:

override func viewDidLoad() {
        super.viewDidLoad()
       self.navigationController!.navigationBar.isHidden = true
    }


回答4:

I faced same problem, this worked for me

navController.navigationBar.hidden = YES;



回答5:

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
}

`



回答6:

In Xamarin.iOS

base.NavigationController.NavigationBarHidden = true;


回答7:

I hide my Navigation bar by unchecking Bar Visibility "Shows Navigation Bar" In Attribute Inspector.Hope this help someone.



回答8:

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];