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?
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.