ViewController編程指南概述-視圖控制器層次結(jié)構(gòu)

應(yīng)用程序視圖控制器之間的關(guān)系定義了每個(gè)視圖控制器所需的行為撤防。 UIKit希望你以規(guī)定的方式使用視圖控制器。 維護(hù)適當(dāng)?shù)囊晥D控制器關(guān)系可確保在需要時(shí)將自動(dòng)行為傳遞到正確的視圖控制器。 如果你違反規(guī)定的遏制和演示關(guān)系膜廊,你應(yīng)用的某些部分將停止按預(yù)期行為拙已。

根視圖控制器

根視圖控制器是視圖控制器層次結(jié)構(gòu)的錨點(diǎn)。 每個(gè)窗口只有一個(gè)根視圖控制器袜茧,其內(nèi)容填充該窗口菜拓。根視圖控制器定義用戶看到的初始內(nèi)容。 圖2-1顯示了根視圖控制器和窗口之間的關(guān)系笛厦。 因?yàn)榇翱跊]有自己的可見內(nèi)容纳鼎,所以視圖控制器的視圖提供了所有的內(nèi)容。

圖2-1 根視圖控制器

VCPG-root-view-controller_2-1_2x.png

可以從UIWindow對(duì)象的rootViewController屬性訪問根視圖控制器。 當(dāng)你使用故事板配置視圖控制器時(shí)贱鄙,UIKit會(huì)在啟動(dòng)時(shí)自動(dòng)設(shè)置該屬性的值劝贸。 對(duì)于以編程方式創(chuàng)建的窗口,必須自己設(shè)置根視圖控制器逗宁。

容器視圖控制器

容器視圖控制器允許你從更易于管理和可重復(fù)使用的部分組裝復(fù)雜的接口映九。 容器視圖控制器將一個(gè)或多個(gè)子視圖控制器的內(nèi)容與可選的自定義視圖相混合以創(chuàng)建其最終界面。 例如瞎颗,UINavigationController對(duì)象顯示來自子視圖控制器的內(nèi)容以及由導(dǎo)航控制器管理的導(dǎo)航欄和可選工具欄件甥。 UIKit包括幾個(gè)容器視圖控制器,包括UINavigationController哼拔,UISplitViewController和UIPageViewController引有。

容器視圖控制器的視圖總是填充給它的空間。 容器視圖控制器通常作為根視圖控制器安裝在窗口中(如圖2-2所示)倦逐,但它們也可以以模態(tài)方式顯示或作為其他容器的子項(xiàng)安裝譬正。 容器負(fù)責(zé)適當(dāng)?shù)囟ㄎ黄渥右晥D。 在圖中僻孝,容器并排放置兩個(gè)子視圖导帝。 雖然它取決于容器接口,但是子視圖控制器可能具有對(duì)容器和任何同級(jí)視圖控制器的最小的了解穿铆。

圖2-2 用作根視圖控制器的容器

VCPG-container-acting-as-root-view-controller_2-2_2x.png

因?yàn)槿萜饕晥D控制器管理其子視圖控制器您单,所以UIKit定義了如何在自定義容器中設(shè)置這些子視圖控制器的規(guī)則。

呈現(xiàn)視圖控制器

呈現(xiàn)視圖控制器用當(dāng)前視圖控制器的內(nèi)容替換當(dāng)前視圖控制器的內(nèi)容荞雏,通常隱藏先前的視圖控制器的內(nèi)容虐秦。 呈現(xiàn)視圖控制器最常用于模板顯示新內(nèi)容。 例如凤优,你可能會(huì)提供一個(gè)視圖控制器來收集用戶的輸入悦陋。 你還可以將它們用作應(yīng)用程序界面的常規(guī)構(gòu)建塊。

當(dāng)你呈現(xiàn)視圖控制器時(shí)筑辨,UIKit在顯示視圖控制器和呈現(xiàn)的視圖控制器之間創(chuàng)建關(guān)系俺驶,如圖2-3所示。 (從呈現(xiàn)的視圖控制器到其顯示視圖控制器之間還存在反向關(guān)系棍辕。)這些關(guān)系形成視圖控制器層次結(jié)構(gòu)的一部分暮现,并且是在運(yùn)行時(shí)定位其他視圖控制器的一種方式。

圖2-3 呈現(xiàn)視圖控制器

VCPG-presented-view-controllers_2-3_2x.png

當(dāng)涉及容器視圖控制器時(shí)楚昭,UIKit可以修改呈現(xiàn)鏈以簡化您必須編寫的代碼栖袋。 不同的呈現(xiàn)樣式對(duì)于其在屏幕上的呈現(xiàn)方式有不同的規(guī)則,例如抚太,全屏呈現(xiàn)始終覆蓋整個(gè)屏幕塘幅。 當(dāng)您呈現(xiàn)視圖控制器時(shí)昔案,UIKit會(huì)查找為該呈現(xiàn)控制器提供合適上下文的視圖控制器。 在許多情況下电媳,UIKit選擇最近的容器視圖控制器踏揣,但它也可以選擇窗口的根視圖控制器。 在某些情況下匆背,你還可以告訴UIKit哪個(gè)視圖控制器定義了呈現(xiàn)視圖控制器的上下文呼伸,并且應(yīng)該處理呈現(xiàn)視圖控制器。

圖2-4顯示了為什么容器通常為呈現(xiàn)視圖控制器提供上下文钝尸。 當(dāng)執(zhí)行全屏呈現(xiàn)時(shí),新的視圖控制器需要覆蓋整個(gè)屏幕搂根。 不是要求子視圖控制器知道其容器的邊界珍促,容器決定是否處理顯示。 因?yàn)槭纠械膶?dǎo)航控制器覆蓋整個(gè)屏幕剩愧,所以它用作呈現(xiàn)視圖控制器并且發(fā)起展示猪叙。

圖2-4個(gè)容器和一個(gè)被呈現(xiàn)的視圖控制器

VCPG-container-and-presented-view-controller_2-4_2x.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仁卷,隨后出現(xiàn)的幾起案子穴翩,更是在濱河造成了極大的恐慌,老刑警劉巖锦积,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芒帕,死亡現(xiàn)場離奇詭異,居然都是意外死亡丰介,警方通過查閱死者的電腦和手機(jī)背蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哮幢,“玉大人带膀,你說我怎么就攤上這事〕裙福” “怎么了垛叨?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柜某。 經(jīng)常有香客問我嗽元,道長,這世上最難降的妖魔是什么莺琳? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任还棱,我火速辦了婚禮,結(jié)果婚禮上惭等,老公的妹妹穿的比我還像新娘珍手。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布琳要。 她就那樣靜靜地躺著寡具,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稚补。 梳的紋絲不亂的頭發(fā)上童叠,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音课幕,去河邊找鬼厦坛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乍惊,可吹牛的內(nèi)容都是我干的杜秸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼润绎,長吁一口氣:“原來是場噩夢啊……” “哼撬碟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莉撇,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤呢蛤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后棍郎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體其障,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年坝撑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了静秆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巡李,死狀恐怖抚笔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侨拦,我是刑警寧澤殊橙,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站狱从,受9級(jí)特大地震影響膨蛮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜季研,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一敞葛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧与涡,春花似錦惹谐、人聲如沸持偏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸿秆。三九已至,卻和暖如春怎囚,著一層夾襖步出監(jiān)牢的瞬間卿叽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工恳守, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留考婴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓催烘,卻偏偏與公主長得像蕉扮,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颗圣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容