常见的APP的页面结构,分为两个横向和纵向两个维度,最为经典的就是横向维度采用UITabBarController,纵向维度采用UINavigationController。当然,横向维度还可以使用UIToolBar工具条或自定义等。
当iOS应用需要具有纵向的层次化的结构的时候,采用导航控制器UINavigationController比较合适,这样用户可以从上一层界面进入下一层界面,当用户在新进入的下一层页面操作完之后,又可以方便地返回到下一层界面。UINavigationController是一个控制器,用户的交互行为则主要依靠导航条UINavigationBar完成。
重点:UINavigationController、UINavigationBar、UINavigationItem、UIViewController四个类的对象的关系
一般导航控制器含有4个对象,UINavigationController、UINavigationBar、UIViewController、UINavigationItem;NavigationItem存放在UINavigationBar上。由下图我们可以知道一个导航控制器控制着多个视图,一个视图控制器控制一个UINavigationItem。
UINavigationController:容器,使用栈的形式存储和管理多个UIViewController,每一个UIViewcontroller就是一个层级页面,导航控制器每次只显示其存储的位于最上面的UIViewcontroller;
UINavigationBar:容器,位于屏幕顶端的控件,与UINavigationController一对一对应,它继承UIView,使用栈的形式存储和管理多个UINavigationItem,导航条上每次只显示其存储的位于最上面的UINavigationItem;
UINavigationItem:容器,由标题,左边N个按钮,右边N个按钮三部分组成,标题是一个位于导航条中间的UIView,每个按钮都是一个UIBarButtonItem控件;
UIViewController:控制器,管理显示视图和模型,被存储在UINavigationController中,与UINavigationItem一对一对应。