Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

navigationController.navigationItem vs navigationItem

Just curious, why setting self.navigationItem = ... works, but self.navigationController.navigationItem fails? The same applies for self.toolbarItems vs self.navigationController.toobarItems.

When to use self.navigationController.navigationItem?

Maybe you will say, they point to different things. but why self.navigationController.navigationBarHidden = YES the navigation bar is hidden. doesn't it means self.navigationController.navigationItem point to the bar i wanted?

like image 473
limboy Avatar asked Jun 04 '13 08:06

limboy


People also ask

What is Navigationitem?

The navigation item used to represent the view controller in a parent's navigation bar.

What is navigation item in Swift?

A navigation controller is a container view that can manage the navigation of hierarchical contents. The navigation controller manages the current displaying screen using the navigation stack. Navigation stack can have “n” numbers of view controllers.

What is navigation Controller in IOS?

The navigation controller manages the navigation bar at the top of the interface and an optional toolbar at the bottom of the interface. The navigation bar is always present and is managed by the navigation controller itself, which updates the navigation bar using the content provided by its child view controllers.


1 Answers

The class UIViewController has a property navigationItem.

This is true of all the subclasses too whether it is a UICollectionViewController, UITableViewController, UINavigationViewController or any custom subclass.

When presented by a UINavigationController the nav controller will create this property and so each view controller gets its own navigationItem. If you do not present it from a navigation controller then the navigationItem is nil.

Now, with a UINavigationController you are more than likely using this as your initial view controller. Therefore, the navigation controller is NOT being presented by another navigation controller and its navigationItem property is nil.

The navigation bar is slightly different as this is managed the other way around.

like image 109
Fogmeister Avatar answered Sep 22 '22 15:09

Fogmeister