Used to maintain a stack of controllers in an application. Provides structure and a simple way of navigating between controllers.
Created by dragging a Navigation Controller onto a StoryBoard and setting the root view controller by right-click + dragging.
Adds a Nav Bar to each view controller in its stack, giving it space to have a title, used to identify controllers. Autogenerates a back button in the top left corner when on a controller that is not the root view controller, allowing a user to pop a controller, returning to the previous controller.
Root View Controller- the first controller to appear when a navigation controller becomes active. Navigation controllers must always have root view controller.
Presenting a new view controller is acheived by pushing a controller onto the navigation controller (aka nav stack). Removing a controller by popping.
pushing- adds a view controller to the top of the stack, making it active and giving it the screen. Previous top view controller is now covered and sits in the second to last position.
popping- removes the topmost view controller from the stack, exposing the one beneath it, giving it the screen again.