iOS視圖控制器使用

在iOS 5.0及以后班挖,iOS為UIViewController類添加了新的屬性和方法:

@property(nonatomic,readonly)?NSArray?*childViewControllers

-?(void)addChildViewController:(UIViewController?*)childController

-?(void)removeFromParentViewController

-?(void)transitionFromViewController::::::

-?(void)willMoveToParentViewController:(UIViewController?*)parent

-?(void)didMoveToParentViewController:(UIViewController?*)parent

這里看看這幾個(gè)方法的使用:

一虏肾、[父視圖控制器?addChildViewController:子視圖控制器];

在此识脆,圖控制器A添加了另一個(gè)圖控制器B倔既,那么A充當(dāng)父視圖控制器,B充當(dāng)子視圖控制器切心。父視圖控制器充當(dāng)了視圖控制器容器的角色飒筑。

1、addChildViewController方法:

1-?(void)addChildViewController:(UIViewController?*)childController

向視圖控制器容器中添加子視圖控制器

childController:子視圖控制器

當(dāng)要添加的子視圖控制器已經(jīng)包含在視圖控制器容器中绽昏,那么协屡,相當(dāng)于先從父視圖控制器中刪除,然后重新添加到父視圖控制器中全谤。

2肤晓、removeFromParentViewController 方法

1-?(void)removeFromParentViewController

從父視圖控制器中刪除。

3认然、transitionFromViewController 方法

1-?(void)transitionFromViewController:(UIViewController?*)fromViewController?toViewController:(UIViewController?*)toViewController?duration:(NSTimeInterval)duration?options:(UIViewAnimationOptions)options?animations:(void(^)(void))animations?completion:(void(^)(BOOLfinished))completion

交換兩個(gè)子視圖控制器的位置(由于添加的順序不同补憾,所以子試圖控制器在父視圖控制器中存在層次關(guān)系)

fromViewController:當(dāng)前顯示的子試圖控制器,將被替換為非顯示狀態(tài)

toViewController:將要顯示的子視圖控制器

duration:交換動(dòng)畫持續(xù)的時(shí)間卷员,單位秒

options:動(dòng)畫的方式

animations:動(dòng)畫Block

completion:完成后執(zhí)行的Block

4盈匾、willMoveToParentViewController 方法

1-?(void)willMoveToParentViewController:(UIViewController?*)parent

當(dāng)一個(gè)視圖控制器從視圖控制器容器中被添加或者被刪除之前,該方法被調(diào)用parent:父視圖控制器毕骡,如果沒有父視圖控制器威酒,將為nil

注意點(diǎn):

當(dāng)我們向我們的視圖控制器容器中調(diào)用removeFromParentViewController方法時(shí),必須要先調(diào)用該方法挺峡,且parent參數(shù)為nil:

[將要?jiǎng)h除的視圖控制器?willMoveToParentViewController:nil];

當(dāng)我們調(diào)用addChildViewController方法時(shí)葵孤,在添加子視圖控制器之前將自動(dòng)調(diào)用該方法。所以橱赠,就不需要我們顯示調(diào)用了尤仍。

5、didMoveToParentViewController 方法

1-?(void)didMoveToParentViewController:(UIViewController?*)parent

當(dāng)從一個(gè)視圖控制容器中添加或者移除viewController后狭姨,該方法被調(diào)用宰啦。

parent:父視圖控制器,如果沒有父視圖控制器饼拍,將為nil

當(dāng)我們向我們的視圖控制器容器(就是父視圖控制器赡模,它調(diào)用addChildViewController方法加入子視圖控制器,它就成為了視圖控制器的容器)中添加(或者刪除)子視圖控制器后师抄,必須調(diào)用該方法漓柑,告訴iOS,已經(jīng)完成添加(或刪除)子控制器的操作。

removeFromParentViewController?方法會(huì)自動(dòng)調(diào)用了該方法辆布,所以瞬矩,刪除子控制器后,不需要在顯示的調(diào)用該方法了锋玲。

其實(shí)景用,這幾個(gè)方法中的API說明,看的還懂惭蹂。

二伞插、關(guān)于willMoveToParentViewController方法和didMoveToParentViewController方法的使用

1.這兩個(gè)方法用在子試圖控制器交換的時(shí)候調(diào)用!即調(diào)用transitionFromViewController 方法時(shí)盾碗,調(diào)用蜂怎。

2.當(dāng)調(diào)用willMoveToParentViewController方法或didMoveToParentViewController方法時(shí),要注意他們的參數(shù)使用:

當(dāng)某個(gè)子視圖控制器將從父視圖控制器中刪除時(shí)置尔,parent參數(shù)為nil杠步。

即:[將被刪除的子試圖控制器?willMoveToParentViewController:nil];

當(dāng)某個(gè)子試圖控制器將加入到父視圖控制器時(shí),parent參數(shù)為父視圖控制器榜轿。

即:[將被加入的子視圖控制器?didMoveToParentViewController:父視圖控制器];

3.無需調(diào)用[子視圖控制器?willMoveToParentViewController:父視圖控制器]方法幽歼。因?yàn)槲覀冋{(diào)用[父視圖控制器?addChildViewController:子視圖控制器]時(shí),已經(jīng)默認(rèn)調(diào)用了谬盐。

只需要在transitionFromViewController方法后甸私,調(diào)用[子視圖控制器didMoveToParentViewController:父視圖控制器];

4.無需調(diào)用[子視圖控制器?didMoveToParentViewController:父視圖控制器]方法。因?yàn)槲覀冋{(diào)用

[子視圖控制器?removeFromParentViewController]時(shí)飞傀,已經(jīng)默認(rèn)調(diào)用了皇型。

只需要在transitionFromViewController方法之前調(diào)用:[子視圖控制器?willMoveToParentViewController:nil]。

經(jīng)過這幾點(diǎn)說明砸烦,在一些視圖切換的過程中弃鸦,和視圖的換位中,應(yīng)該可以了解什么時(shí)候去調(diào)用對(duì)應(yīng)的視圖啦幢痘。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唬格,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颜说,更是在濱河造成了極大的恐慌购岗,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件门粪,死亡現(xiàn)場(chǎng)離奇詭異喊积,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)玄妈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門乾吻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來髓梅,“玉大人,你說我怎么就攤上這事溶弟∨纾” “怎么了瞭郑?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵辜御,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我屈张,道長(zhǎng)擒权,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任阁谆,我火速辦了婚禮碳抄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘场绿。我一直安慰自己剖效,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布焰盗。 她就那樣靜靜地躺著璧尸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熬拒。 梳的紋絲不亂的頭發(fā)上爷光,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音澎粟,去河邊找鬼蛀序。 笑死,一個(gè)胖子當(dāng)著我的面吹牛活烙,可吹牛的內(nèi)容都是我干的徐裸。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼啸盏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼倦逐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宫补,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤檬姥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后粉怕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體健民,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年贫贝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秉犹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛉谜。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崇堵,靈堂內(nèi)的尸體忽然破棺而出型诚,到底是詐尸還是另有隱情,我是刑警寧澤鸳劳,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布狰贯,位于F島的核電站,受9級(jí)特大地震影響赏廓,放射性物質(zhì)發(fā)生泄漏涵紊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一幔摸、第九天 我趴在偏房一處隱蔽的房頂上張望摸柄。 院中可真熱鬧,春花似錦既忆、人聲如沸驱负。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)跃脊。三九已至,卻和暖如春庆亡,著一層夾襖步出監(jiān)牢的瞬間匾乓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工又谋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拼缝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓彰亥,卻偏偏與公主長(zhǎng)得像咧七,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子任斋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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