1.導(dǎo)航控制器簡(jiǎn)介
1.設(shè)置界面就是一個(gè)典型的導(dǎo)航控制器,只要看到上面一個(gè)條,就是一個(gè)導(dǎo)航控制器
2.在多控制器開(kāi)發(fā)當(dāng)中适篙,第一個(gè)控制器多是導(dǎo)航控制器,導(dǎo)航控制器可以輕松完成控制器之間的切換
2.導(dǎo)航控制器view的結(jié)構(gòu)
? ? (1).導(dǎo)航控制器也是一個(gè)控制器箫爷,肯定有它自己的view(圖2.1)
? ? (2).導(dǎo)航控制器的標(biāo)志-導(dǎo)航條
導(dǎo)航控制器的標(biāo)志就是(圖2.2.1)上面的條嚷节,這個(gè)條叫做導(dǎo)航條聂儒,導(dǎo)航條是顯示在導(dǎo)航控制器view上面的
導(dǎo)航條的y值是從20開(kāi)始的,上面20是狀態(tài)欄硫痰,高度44衩婚。
導(dǎo)航條的y值是20,高度44效斑,但是我們看到導(dǎo)航條有一個(gè)半透明的效果非春,它是從0點(diǎn)位置開(kāi)始的
它其實(shí)是導(dǎo)航條的子控件,它超過(guò)了導(dǎo)航條的高度缓屠,子控件超出父控件的尺寸也是能夠顯示的(圖2.2.2)
? ? ?(3).存放子控制器的view
? ? ? ? 導(dǎo)航控制器view當(dāng)中税娜,還有一個(gè)專(zhuān)門(mén)用來(lái)存放子控制器的view(圖2.3)
? ? ? ? 導(dǎo)航控制器view上面有兩層,最外面的一層是導(dǎo)航條藏研,導(dǎo)航條下面是專(zhuān)門(mén)用來(lái)存放子控制器的view
3.導(dǎo)航控制器的使用
? ? (1).通過(guò)push方法給導(dǎo)航控制器添加子控制器
導(dǎo)航控制器會(huì)把子控制器的view添加到導(dǎo)航控制器專(zhuān)門(mén)用來(lái)存放子控制器的view上
導(dǎo)航控制器的initWithRootViewController設(shè)置導(dǎo)航控制器的跟控制器
? ? 它其實(shí)底層就是調(diào)用導(dǎo)航控制器的push方法,把傳入的子控制器概行,添加為導(dǎo)航控制器的子控制器
注意:導(dǎo)航控制器必須要有一個(gè)跟控制器
導(dǎo)航控制器的跟控制器蠢挡,就是導(dǎo)航控制器的子控制器
導(dǎo)航控制器當(dāng)中有一個(gè)childViewControllers數(shù)組,數(shù)組當(dāng)中就是用來(lái)存放導(dǎo)航控制器的子控制器
? ? (2).導(dǎo)航控制器是以棧的形式管理控制器的
里面有兩個(gè)數(shù)組凳忙,viewControllers和childViewControllers业踏,都是用來(lái)存放導(dǎo)航控制器的子控制器
使用push方法,把某個(gè)控制器壓入棧中
使用pop方法涧卵,將棧頂控制器移除棧中
4.導(dǎo)航控制器的管理原則
說(shuō)明:
(1).當(dāng)設(shè)置導(dǎo)航控制器的跟控制器時(shí)勤家,也就是initWithRootViewController
實(shí)際上底層是調(diào)用導(dǎo)航控制器的push方法,將控制器設(shè)置為導(dǎo)航控制器子控制柳恐,并(2).將控制器的view添加到導(dǎo)航控制器專(zhuān)門(mén)用來(lái)存放子控制的view上
(3).導(dǎo)航控制器的view上面有兩個(gè)view伐脖,一個(gè)是導(dǎo)航條,另一個(gè)是用來(lái)存放子控制器的view
(4).導(dǎo)航控制器的子控制器都是存放到一個(gè)棧當(dāng)中乐设,也是一個(gè)數(shù)組
1.當(dāng)調(diào)用導(dǎo)航控制器的push方法時(shí)讼庇,就會(huì)把控制器壓入到導(dǎo)航控制器的棧中,那么這個(gè)控制器就存放在導(dǎo)航控制器的棧頂近尚,它就會(huì)把原來(lái)導(dǎo)航控制器存放子控制器view上的控制器的view移除蠕啄,然后把棧頂控制器的view添加到導(dǎo)航控制器存放子控制器的view上
注意,只是把控制器的view從導(dǎo)航控制器存放子控制器的view上給移除戈锻,控制器并沒(méi)有被移除
2.當(dāng)調(diào)用pop方法時(shí)歼跟,首先會(huì)把導(dǎo)航控制器存放子控制器view最上面的view移除,然后再將導(dǎo)航控制器棧頂控制器給移除格遭,棧頂控制器沒(méi)有被強(qiáng)引用哈街,就會(huì)被銷(xiāo)毀,最后把上一個(gè)控制器的view添加到導(dǎo)航控制器存放子控制的view上