UINavigationController without navigation bar?

Solution 1:

You should be able to do the following:

self.navigationController.navigationBar.isHidden = true //Swift 5

where self.navigationController is (obviously) an instance of UINavigationController. Seems to work for me, but I only briefly tested it before posting this.

Solution 2:

In Xcode 4.3.2:

  1. Select the navigation controller in the storyboard
  2. Select the Attributes Inspector in the (right) Utilities panel
  3. Under the Navigation Controller category you have two check boxes:

    [] Shows Navigation Bar

    [] Shows Toolbar

Worked for me...

Solution 3:

If you want no navigation bar, and you want the content to be adjusted up to where the navigation bar normally would be, you should use

self.navigationController.navigationBarHidden = YES;

This gives you a result like this:

enter image description here

Whereas self.navigationController.navigationBar.hidden = YES; gives you a space where the navigationBar should be. Like this:

enter image description here

Solution 4:

Swift 4

I hide it in viewWillAppear

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

Then you can put it back when you push a segue (if you want to have the back button on the next view)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

Solution 5:

Swift 3 Programmatically

self.navigationController.isNavigationBarHidden = true

or

self.navigationController.navigationBar.isHidden = true

Note: I didn't see a difference between these two approaches testing on iOS 10.