淺談對(duì)UINavigationController(導(dǎo)航控制器)的理解

有時(shí)候會(huì)遇到這樣的情況,一個(gè)導(dǎo)航控制器,push出的很多層controller,當(dāng)我們?cè)诓煌捻?yè)面對(duì)導(dǎo)航控制器的顯示效果做不同的操作的時(shí)候,會(huì)發(fā)現(xiàn)針對(duì)導(dǎo)航控制器的邏輯操作很麻煩。因?yàn)槭峭粋€(gè)控制器,在某一個(gè)頁(yè)面的操作效果會(huì)影響到其他頁(yè)面上的導(dǎo)航條顯示效果,這樣會(huì)增加控制器之間的耦合度,很不利于開發(fā)。
為了解決這樣的問題,可以順著下面的思路解決問題。
導(dǎo)航控制器作用無非兩種,一種是push控制器,做頁(yè)面之間的跳轉(zhuǎn),另外一種功能是,他是一個(gè)view,上面可以顯示一些東西,例如按鈕,搜索框等等。
既然這樣,我們是不是可以把導(dǎo)航控制器功能進(jìn)行分解,解決上面的問題。
下面介紹一下我的解決方法。
在整個(gè)項(xiàng)目中創(chuàng)建一個(gè)根導(dǎo)航控制器,這個(gè)根導(dǎo)航控制器的作用只用來做頁(yè)面之間的跳轉(zhuǎn),不起顯示作用,這樣我們只要隱藏navigationBar就可以

NavigationController

其實(shí)只要把navigationBar隱藏就行,其他的操作看自己的個(gè)人功能需求。
以后項(xiàng)目中push的控制器都添加上這個(gè)根控制器,這樣做的效果就是雖然導(dǎo)航控制器存在,但是push出來的控制器上不在顯示navigationBar了。
那么接下來我們要做的就是在push出的控制器view上添加上navigationBar就可以了

ViewController

好了,完成了,以后所有針對(duì)導(dǎo)航條的顯示上的操作,只要在自己的控制器里就行了
這樣做還有一個(gè)好處就是push后自帶的從屏幕邊緣滑動(dòng)返回不會(huì)因?yàn)樽远x導(dǎo)航欄控制器的返回按鈕而取消
另外要注意一點(diǎn)就是頁(yè)面上繼續(xù)添加view的時(shí)候,frame的問題。
最后分享一個(gè)將導(dǎo)航條弄透明的方法,結(jié)合上面的代碼,很簡(jiǎn)單只要三行代碼

nav設(shè)置透明.png

只要這樣navBar就變透明了,以后針對(duì)導(dǎo)航欄的顏色操作,只要改變里面的navBgView的背景色就可以了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,362評(píng)論 4 61
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 26,130評(píng)論 7 249
  • 半夜十一點(diǎn),候車室,一位老父親,一位嬰兒! 那位父親就坐在我的對(duì)面,衣衫襤褸,懷里躺著一位一歲不足的嬰兒,父親換著...
    Zachary_Ain閱讀 343評(píng)論 1 2
  • 作者設(shè)計(jì)思路 1.YYMemoryCache YYMemoryCache負(fù)責(zé)管理內(nèi)存緩存。這個(gè)類是線程安全的。 L...
    WeiHing閱讀 719評(píng)論 0 7
  • “你吃飯喜歡從中間開始挖洞然后向四周發(fā)散著吃么?” 我抬起頭,看著對(duì)面那張半小時(shí)前才認(rèn)識(shí)的臉,有點(diǎn)迷茫和不知所措。...
    MsTitanium閱讀 764評(píng)論 0 0

友情鏈接更多精彩內(nèi)容