04- 導航控制器管理原則
程序一進入時,就要讓窗口的根控制器是一個導航控制器.
1.新建窗口
2.創(chuàng)建導航控制器.并設置導航控制器的根控制器
3.把導航控制器設為窗口的根控制器.
4.顯示窗口.
說明:1.當設置導航控制器的根控制器時,也就是initWithRootViewController,
它底層其實是調(diào)用了導航控制器的push方法.把該控制器添加為導航控制器的子控制器.
并且它會把該控制器的View添加到導航控制器專門存放子控制器的View上面.
2.把導航控制器設為窗口的根控制器時,它就會把導航控制器的View添加到窗口的View上面.
所以程序一運行時, 我們看到的就是一個導航控制器的View.
導航控制器的View內(nèi)部默認有兩個子view.一個是導航條, 一個是轉(zhuǎn)專存放子控制器的View.
現(xiàn)在專門存放子控制器的View里面存放的就是導航控制器根控制器的View.
導航控制器的子控制器都是存放到一個棧中.也就是一個數(shù)組當中.
當調(diào)用導航控制器的push方法時, 就會把一個控制器壓入到導航控制器的棧中.
壓入棧中是, 那么剛壓入棧中的這個導航控制器就在棧的最頂部.
它就會把原來導航控制器View當中存放的子控制器View的內(nèi)容移除,
然后把導航控制器棧頂控制器的View添加到導航控制器專門存放子控制器View當中.
注意:只是把控制器的View從導航控制器存放子控制器的View當中移除,并沒有把控制器從棧中移除.所以上一個控制器還在.
當調(diào)用pop當方法時, 就會把導航控制器存放子控制器View當中控制器的View移除,并且會把該控制器從棧里面移除.
此時該控制器就會被銷毀.接著它就會把上一個控制器的View添加到導航控制器專門存放子控制器的View當中.