Title: Theory / Important / CS / Programming / Objective-C / Library / UIKit / View / navigation
On every note of this deck, unless a note says otherwise:
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Variables: UINavigationController navigationController

Name: Navigation bar
Definition: appears at the top of an app screen, below the status bar,
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS System Icon
Definition2: enables navigation through a series of hierarchical screens

Question: What is navigation bar background
Answer: translucent, may have a tint
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS System Icon

Question: When should navigation bar hide
Answer: keyboard is on screen, or generally view resize
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS System Icon
Answer2: for immersive experience

Question: What's usually on left of navigation bar
Answer: Back button
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS System Icon

Question: What's usually on right of navigation bar
Answer: A button "done" or any other confirmation that this view's action should be registered
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS System Icon

Question: When should you use a large title
Answer: When you are at the top of the view
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS navigation bar
Answer2: When the title is not generic information but related to actual current content (e.g. name of current album, and not "albums")

Question: When should you use a small title
Answer: When you have scrolled in the view
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS navigation bar
Answer2: when the title is generic and can be guessed from the view content. E.g. "albums"

Question: What should a navigation bar contains
Answer: Segmented control OR
Page: https://developer.apple.com/design/human-interface-guidelines/ios/bars/navigation-bars/
Context: iOS navigation bar
Answer2: Current title, back button and a control that manages the view's contents

Typ: UINavigationItem
Meaning: The items that a navigation bar displays when the associated view controller is visible.
Page: https://developer.apple.com/documentation/uikit/uiviewcontroller?language=objc
Language: Objective-C
Variables: UIViewControler viewController
Subtype of: UIBarItem

Typ: UINavigationController
Meaning: A container view controller that defines a stack-based scheme for navigating hierarchical content.
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Language: Objective-C
Context: iOS UI
Subtype of: UIViewController

Question: How many view is in a UINavigationController at one time
Answer: only one
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Context: iOS UI

Question: In UINavigationController what occurs when pressing the back button
Answer: Last view come back
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Context: iOS UI

Constant: UINavigationControllerHideShowBarDuration
Meaning: This variable specifies the duration when animating the navigation bar.
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Language: Objective-C
Context: iOS UINavigationController

Variable: navigationController.barHideOnSwipeGestureRecognizer
Meaning: The gesture recognizer used to hide the navigation bar and toolbar.
Context: iOS
Language: Objective-C
Typ: UIPanGestureRecognizer

Variable: navigationController.barHideOnTapGestureRecognizer
Meaning: The gesture recognizer used to hide and show the navigation and toolbar.
Context: iOS
Language: Objective-C
Typ: UITapGestureRecognizer
Assuming: hidesBarsOnTap property is YES

Variable: navigationController.navigationBarHidden
Meaning: whether the navigation bar is hidden.
Context: iOS
Language: Objective-C

Variable: navigationController.hidesBarsWhenKeyboardAppears
Meaning: whether the navigation controller hides its bars when the keyboard appears.
Context: iOS
Language: Objective-C
Initialization: NO

Variable: navigationController.hidesBarsWhenVerticallyCompact
Meaning: whether the navigation controller hides its bars in a vertically compact environment.
Context: iOS
Language: Objective-C
Initialization: NO

Variable: navigationController.hidesBarsOnSwipe
Meaning: whether the navigation bar hides its bars in response to a swipe gesture.
Context: iOS
Language: Objective-C
Initialization: NO

Variable: navigationController.hidesBarsOnTap
Meaning: whether the navigation controller allows hiding of its bars using a tap gesture.
Context: iOS
Language: Objective-C
Initialization: NO

Variable: navigationController.toolbarHidden
Meaning: whether the navigation controller’s built-in toolbar is visible.
Context: iOS
Language: Objective-C
Initialization: YES

Variable: navigationController.toolbar
Meaning: The custom toolbar associated with the navigation controller.
Context: iOS
Language: Objective-C
Typ: UIToolbar

Variable: navigationController.navigationBar
Meaning: The navigation bar managed by the navigation controller.
Context: iOS
Language: Objective-C
Typ: UINavigationBar

Variable: navigationController.interactivePopGestureRecognizer
Meaning: The gesture recognizer responsible for popping the top view controller off the navigation stack.
Context: iOS
Language: Objective-C
Typ: UIGestureRecognizer

Variable: navigationController.viewControllers
Meaning: The view controllers currently on the navigation stack.
Context: iOS
Language: Objective-C

Variable: navigationController.visibleViewControllers
Meaning: The view controller associated with the currently visible view in the navigation interface.
Context: iOS
Language: Objective-C

Variable: navigationController.topViewController
Meaning: The view controller at the top of the navigation stack.
Context: iOS
Language: Objective-C

Variable: navigationController.delegate
Meaning: The delegate of the navigation controller object.
Context: iOS
Language: Objective-C
Typ: UINavigationControllerDelegate

Variable: navigationController.delegate
Meaning: The delegate of the navigation controller object.
Context: iOS
Language: Objective-C

Instruction: [navigationController
  initWithRootViewController:rootViewController
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Initializes and returns a newly created navigation controller.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  initWithNavigationBarClass:navigationBarClass
  toolbarClass:toolbarClass
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Initializes and returns a newly created navigation controller that uses your custom bar subclasses.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  initWithNibName:nibNameORNil
  bundle:nibBundleOrNil
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: ?
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  initWithCoder:aDecoder
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: ?
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  setViewControllers:viewControllers
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Replaces the view controllers currently managed by the navigation controller with the specified items.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController
Extra: Use this method to update or replace the current view controller stack without pushing or popping each controller explicitly

Instruction: [navigationController
  pushViewController:viewController
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Pushes viewController onto the receiver’s stack and updates the display.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  popViewControlleAnimated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Pops the top view controller from the navigation stack and updates the display.
Language: Objective-C
Context: iOS
Returns: The popped view controller
Variables: UINavigationController navigationController

Instruction: [navigationController
  popToRootViewControllerAnimated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Pops all the view controllers on the stack except the root view controller and updates the display.
Language: Objective-C
Context: iOS
Returns: The popped view controllers
Variables: UINavigationController navigationController

Instruction: [navigationController
  popToViewController:viewController
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Pops view controllers until the specified view controller is at the top of the navigation stack.
Language: Objective-C
Context: iOS
Returns: The popped view controllers
Variables: UINavigationController navigationController

Instruction: [navigationController
  setNavigationBarHidden:hidden
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Sets whether the navigation bar is hidden.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  setToolbarHidden:hidden
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Changes the visibility of the navigation controller’s built-in toolbar.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Instruction: [navigationController
  showViewController:vc
  sender:sender
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontroller?language=objc
Effect: Presents the specified view controller in the navigation interface.
Language: Objective-C
Context: iOS
Variables: UINavigationController navigationController

Typ: UINavigationControllerDelegate
Meaning: modify behavior when a view controller is pushed or popped from the navigation stack of a UINavigationController object.
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Context: iOS
Language: Objective-C

Typ: UINavigationControllerOperation
TypMeaning: These constants define the type of navigation controller transitions that can occur.
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Language: Objective-C
Context: iOS
Value: UINavigationControllerOperationNone
Value2: UINavigationControllerOperationPush
Value3: UINavigationControllerOperationPop

Instruction: [navigationControllerDelegate
  navigationControllerPreferredInterfaceOrientationForPresentation:navigationController
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Language: Objective-C
Context: iOS
Returns: the preferred orientation for presentation of the navigation controller, as determined by the delegate.
Variables: UINavigationControllerDelegate navigationControllerDelegate

Instruction: [navigationControllerDelegate
  navigationController:navigationController
  interactionControllerForAnimationController:animationController
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Effect: Called to allow the delegate to return an interactive animator object for use during view controller transitions.
Language: Objective-C
Context: iOS
Returns: The animator object responsible for managing the transition animations, or nil if you want to use the standard navigation controller transitions.
Variables: UINavigationControllerDelegate navigationControllerDelegate

Instruction: [navigationControllerDelegate
  navigationController:navigationController
  animationControllerForOperation:operation
  fromViewController:fromVC
  toViewController:toVC
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Language: Objective-C
Context: iOS
Returns: The animator object responsible for managing the transition animations, or nil if you want to use the standard navigation controller transitions.
Variables: UINavigationControllerDelegate navigationControllerDelegate

Instruction: [navigationControllerDelegate
  navigationController:navigationController
  didShowViewController:viewController
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Effect: Called just after the navigation controller displays a view controller’s view and navigation item properties.
Language: Objective-C
Context: iOS
Variables: UINavigationControllerDelegate navigationControllerDelegate

Instruction: [navigationControllerDelegate
  navigationController:navigationController
  willShowViewController:viewController
  animated:animated
]
Page: https://developer.apple.com/documentation/uikit/uinavigationcontrollerdelegate?language=objc
Effect: Called just before the navigation controller displays a view controller’s view and navigation item properties.
Language: Objective-C
Context: iOS
Variables: UINavigationControllerDelegate navigationControllerDelegate