Swift:解決ViewController中viewWillAppear失效的問題

最近做了一個功能饺藤,大概是這樣的浮创,把 ViewController B初厚、ViewController C...... 的view 添加到ViewController A中炎码,同時把B忆谓、C添加到A 的 childViewControllers 裆装,然后當(dāng)A顯示時,發(fā)現(xiàn)B倡缠、C的viewWillAppear哨免、viewDidAppear、viewWillDisappear昙沦、viewDidDisappear全都失效了琢唾。最終的解決方案如下:
在A中執(zhí)行如下操作就可以解決了

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.childViewControllers.forEach {
        $0.beginAppearanceTransition(true, animated: animated)
    }
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.childViewControllers.forEach {
        $0.endAppearanceTransition()
    }
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.childViewControllers.forEach {
        $0.beginAppearanceTransition(false, animated: animated)
    }
}

override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    self.childViewControllers.forEach {
        $0.endAppearanceTransition()
    }
}

最后大家看一下官方文檔關(guān)于,open func beginAppearanceTransition,open func endAppearanceTransition()的解釋

If a custom container controller manually forwards its appearance callbacks, then rather than calling
viewWillAppear:, viewDidAppear: viewWillDisappear:, or viewDidDisappear: on the children these methods
should be used instead. This will ensure that descendent child controllers appearance methods will be
 invoked. It also enables more complex custom transitions to be implemented since the appearance callbacks are
 now tied to the final matching invocation of endAppearanceTransition.

大概意思是,如果父容器要發(fā)生改變盾饮,不是直接調(diào)用子視圖的方法采桃,而是用這些來替代使用,這樣可以確保子視圖也將執(zhí)行對應(yīng)的方法丘损,去改變視圖本身普办。

open func beginAppearanceTransition(_ isAppearing: Bool, animated: Bool)

isAppearing:true:子視圖即將顯示;false:子視圖即將消失徘钥,所以在viewWillAppear為true衔蹲,viewWillDisappear為false

open func endAppearanceTransition()

beginAppearanceTransition成對出現(xiàn),完成后調(diào)用即可

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呈础,一起剝皮案震驚了整個濱河市舆驶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌而钞,老刑警劉巖沙廉,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異臼节,居然都是意外死亡撬陵,警方通過查閱死者的電腦和手機(jī)俱病,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袱结,“玉大人,你說我怎么就攤上這事途凫」讣校” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵维费,是天一觀的道長果元。 經(jīng)常有香客問我,道長犀盟,這世上最難降的妖魔是什么而晒? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮阅畴,結(jié)果婚禮上倡怎,老公的妹妹穿的比我還像新娘。我一直安慰自己贱枣,他們只是感情好监署,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纽哥,像睡著了一般钠乏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上春塌,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天晓避,我揣著相機(jī)與錄音,去河邊找鬼只壳。 笑死俏拱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吕世。 我是一名探鬼主播彰触,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼命辖!你這毒婦竟也來了况毅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤尔艇,失蹤者是張志新(化名)和其女友劉穎尔许,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體终娃,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡味廊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片余佛。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡柠新,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辉巡,到底是詐尸還是另有隱情恨憎,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布郊楣,位于F島的核電站憔恳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏净蚤。R本人自食惡果不足惜钥组,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望今瀑。 院中可真熱鬧程梦,春花似錦、人聲如沸放椰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砾医。三九已至拿撩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間如蚜,已是汗流浹背压恒。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留错邦,地道東北人探赫。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像撬呢,于是被迫代替她去往敵國和親伦吠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,334評論 8 265
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程魂拦,因...
    小菜c閱讀 6,362評論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理毛仪,服務(wù)發(fā)現(xiàn),斷路器芯勘,智...
    卡卡羅2017閱讀 134,626評論 18 139
  • 生命是一個不可思議的東西箱靴。 人的生命因為被上天賦予了觀察力、聆聽力荷愕、思考力衡怀、表達(dá)力棍矛、創(chuàng)造力, 在生靈萬物之中應(yīng)該更...
    光中的cici閱讀 264評論 0 3
  • 兩年前抛杨,何英優(yōu)異的成績够委,考取了本鎮(zhèn)最好的莫華高中。她被分到高一(3)班怖现。班上有個叫梅子的女生慨绳,齊耳短發(fā),模樣清秀真竖,...
    QIYU098閱讀 840評論 30 66