导航栏视图控制器通过一种被称为“堆栈”的方式来管理集成在其中的子视图控制器,堆栈好比是一摞书,用户看到的是一摞书的的最上面的一本,如果有新的书放进去,称为“入栈”,如果取走一本书则称为“出栈”。
用法:
1:新建一个single view application .
2: 在对象库中找到Navigation Controller
将其拖拽到故事版中
3:可以注意到,interface builder默认添加了一个与导航栏视图控制器相连的表格试图控制器,这并不是我们需要的,可以选中后将其删除。
4:改变初始场景指示器,让其指向导航栏试图控制器,以保证导航栏视图控制器对视图的导航管理。
即:
5:然后选中导航栏试图控制器后按住control键,拖出蓝色的线条到最初的视图控制器,在弹出的segue配置窗口中选择 root view controller。
6:完成后还可以继续添加更多地导航层次。往故事版里再添加2个视图控制器
为了方便识别,将最初的视图控制器的标题改为 “根视图控制器”,后添加的2个视图控制器分别为 第一个、第二个子视图控制器
以此类推哈
7:在根视图控制器中添加一个按钮,修改按钮的显示文本为“进入第一个子试图控制器”,然后选中按钮后按住control键,拖出蓝色的线条到第一个子试图控制器,在弹出的segue配置窗口中选择 push。相对的,也将第一个子试图控制器和第二个子试图控制器通过按钮的push类型连接起来,这样一个三层次的导航栏应用就形成了。
8:可以发现,由于和导航栏视图控制器进行了关联,三个试图控制器顶部均出现了蓝色导航栏,导航栏中部可以进行编辑标题
9:运行效果如下:依次点击按钮
10:总结:导航栏视图控制器可以嵌套其他各种视图控制器,也可以在标签栏试图控制器中嵌套其他各种子视图控制器,但是只允许在标签栏视图控制器中嵌套导航栏视图控制器,而反过来是不支持的。