第七色在线视频,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條經驗 獲得超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)建視圖控制器時才調用它。這使得它成為在代碼中創(chuàng)建視圖的好地方。

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

2. loadViewIfNeeded

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

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

3. viewDidLoad

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

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

4. viewWillAppear

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

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

5. viewWillLayoutSubviews

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

在調用視圖控制器的layoutSubview方法之前調用。子類可以根據需要實現。缺省值是NOP。

6. viewDidLayoutSubviews

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

在調用視圖控制器的layoutSubview方法之后調用。子類可以根據需要實現。缺省值是NOP。

7. viewDidAppear

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

當視圖完全轉換到屏幕上時調用。默認什么都不做

8. viewWillDisappear

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

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

9. viewDidDisappear

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

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

現在按.蘋果在實現此方法時,應記住調用super實施這一具體方法。

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

希望這能幫上忙。謝謝。

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


查看完整回答
反對 回復 2019-06-10
  • 3 回答
  • 0 關注
  • 787 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號