UINavigationController是一个控制类,它维护一个UINavigationBar及一个视图栈。UINavigationController和UINavigationBar在整个视图栈范围内是唯一的,但UINavigationItem却由视图栈中的每个视图分别维护。
假设视图栈中某视图为A(self指的是AViewController),当我们需要操作navigationBar时,会使用self.navigationController.navigationBar;而当我们需要操作navigationBar上的Item时则使用self.navigationItem
当需要在应用内处理多个视图间的切换时,可以将UIViewController设置为应用窗口的rootViewController并通过调用UINavigationController的pushViewController和popViewController方法来操作不同视图的入栈和出栈,这两个方法会自动处理视图切换时的动画,我们也可以通过设置animated参数为NO来禁用默认动画。
每个视图上显示的navigationBar默认情况下包含一个leftBarButton(backBarButton)、一个title和一个rightBarButton。当视图没有自定义的leftBarButton时,navigationBar会显示一个尖角的默认backBarButton,其标题为前一个视图的title。单击backBarButton,会自动执行popViewController方法并切回前一个视图。