第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

了解IOS UIViewController生命周期

了解IOS UIViewController生命周期

iOS
紅糖糍粑 2019-06-10 20:40:34
了解IOS UIViewController生命周期您能否解釋一下如何正確地管理UIViewController生命周期?特別是,我想知道如何使用Initialize, ViewDidLoad, ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear, ViewDidUnload和DisposeMono Touch中的方法UIViewController班級,等級。
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

這是最新的IOS版本(用Xcode 9.3,SWIFT 4.1)。下面是使UIViewController完成。

  • loadView()

  • loadViewIfNeeded()

  • viewDidLoad()

  • viewWillAppear(_ animated: Bool)

  • viewWillLayoutSubviews()

  • viewDidLayoutSubviews()

  • viewDidAppear(_ animated: Bool)

  • viewWillDisappear(_ animated: Bool)

  • viewDidDisappear(_ animated: Bool)

讓我來解釋所有這些階段。

1. loadView

此事件創(chuàng)建控制器管理的視圖。只有在以編程方式創(chuàng)建視圖控制器時才調(diào)用它。這使得它成為在代碼中創(chuàng)建視圖的好地方。

如果子類沒有使用nib,那么子類應(yīng)該在這里創(chuàng)建它們的自定義視圖層次結(jié)構(gòu)。不應(yīng)該直接打電話。

2. loadViewIfNeeded

如果是當前的視圖viewController尚未設(shè)置,則此方法將加載視圖,但請記住,這僅在IOS>=9.0中可用。因此,如果您支持IOS<9.0,那么不要期望它會出現(xiàn)在圖片中。

如果尚未設(shè)置視圖控制器的視圖,則加載該視圖控制器的視圖。

3. viewDidLoad

這個viewDidLoad事件只在視圖被創(chuàng)建并加載到內(nèi)存中時調(diào)用,但尚未定義視圖的界限。這是初始化視圖控制器將要使用的對象的好地方。

在加載視圖后調(diào)用。對于在代碼中創(chuàng)建的視圖控制器,這是后加載視圖.對于從NIB中未存檔的視圖控制器,這是在設(shè)置視圖之后。

4. viewWillAppear

此事件通知viewController每當視圖出現(xiàn)在屏幕上時。在此步驟中,視圖具有已定義但未設(shè)置方向的界限。

當視圖即將變得可見時調(diào)用。默認什么都不做。

5. viewWillLayoutSubviews

這是生命周期中最后確定界限的第一步。如果您沒有使用約束或自動布局,您可能希望在這里更新子視圖。這僅在IOS>=5.0中可用。因此,如果您支持IOS<5.0,那么不要期望它出現(xiàn)在圖片中。

在調(diào)用視圖控制器的layoutSubview方法之前調(diào)用。子類可以根據(jù)需要實現(xiàn)。缺省值是NOP。

6. viewDidLayoutSubviews

此事件通知視圖控制器已設(shè)置子視圖。在設(shè)置子視圖之后,對其進行任何更改都是一個很好的地方。這僅在IOS>=5.0中可用。因此,如果您支持IOS<5.0,那么不要期望它出現(xiàn)在圖片中。

在調(diào)用視圖控制器的layoutSubview方法之后調(diào)用。子類可以根據(jù)需要實現(xiàn)。缺省值是NOP。

7. viewDidAppear

這個viewDidAppear事件在屏幕上顯示視圖后觸發(fā)。這使得從后端服務(wù)或數(shù)據(jù)庫獲取數(shù)據(jù)成為一個很好的地方。

當視圖完全轉(zhuǎn)換到屏幕上時調(diào)用。默認什么都不做

8. viewWillDisappear

這個viewWillDisappear事件在呈現(xiàn)視圖時觸發(fā)viewController即將消失、解散、掩蓋或隱藏在他人后面viewController..這是一個很好的地方,您可以限制您的網(wǎng)絡(luò)調(diào)用,使計時器無效,或者釋放綁定到它的對象。viewController.

當視圖被取消、覆蓋或以其他方式隱藏時調(diào)用。

9. viewDidDisappear

這是生命周期的最后一步,任何人都可以在呈現(xiàn)視圖之后觸發(fā)此事件。viewController已經(jīng)消失了,被解雇了,被掩蓋了,或者被隱藏了。

在視圖被駁回、覆蓋或以其他方式隱藏后被調(diào)用。默認什么都不做

現(xiàn)在按.蘋果在實現(xiàn)此方法時,應(yīng)記住調(diào)用super實施這一具體方法。

如果子類UIViewController,則必須調(diào)用此方法的超級實現(xiàn),即使您沒有使用NIB。(為了方便起見,默認的init方法將為您做到這一點,并為這兩個方法參數(shù)指定nil。)在指定的NIB中,F(xiàn)ile的所有者代理應(yīng)該將其類設(shè)置為視圖控制器子類,并將視圖出口連接到主視圖。如果使用nib名稱調(diào)用此方法,則該類‘-loadView方法將嘗試加載名稱與視圖控制器類相同的NIB。如果實際上不存在這樣的nib,則必須調(diào)用-setView:以前-view調(diào)用,或覆蓋-loadView方法以編程方式設(shè)置視圖。

希望這能幫上忙。謝謝。

更新@ThomasW指出內(nèi)部評論viewWillLayoutSubviewsviewDidLayoutSubviews在加載主視圖的子視圖時,例如當加載表視圖或集合視圖的單元格時,也會調(diào)用。


查看完整回答
反對 回復(fù) 2019-06-10
  • 3 回答
  • 0 關(guān)注
  • 780 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號