iOS ViewController生命週期

來源:互聯網
上載者:User

標籤:

ViewController是view的controller,viewController的職責主要包括管理內部各個view的載入顯示與卸載,同時負責與其他ViewController的通訊和協調。

在IOS中 有兩類ViewController:

1. 顯示內容,比如UIViewController,UITableViewController等,同時還可以自訂繼承自UIViewController得ViewController。

2. 用於控制和顯示其他ViewController的ViewController。這種ViewController一般都是一個ViewController容器:如UINavigationViewController和UITabBarController等,

它們都有一個屬性:viewControllers。UINavigationController是以Stack的形式來儲存和管理ViewController,UITabBarController是以Array的形式來管理ViewController。

 

ViewController生命週期

alloc -> initWithNibName ->loadView ->viewDidLoad -> 

 

viewWillAppear ->viewDidAppear -> viewWillDisappear ->

 

viewDidDisappear ->dealloc。

啟動程式:  ViewDidLoad    [view即將顯示,此時superview一般為nil,即view還沒有加到任何一個view之中]

       ViewWillAppear    [view已經顯示,被加到另一個view中]

       View Did Appear  [view即將消失,此時一半還沒有調用removeFromSuperView]

按下Home鍵,並沒有任何紀錄(此時程式被掛起)

雙擊Home鍵,刪除該程式:  ViewWillDisappear  [view從superview中移除了]

               View Did Disappear

當view被添加到其他view中之前時,會調用viewWillAppear,而之後會調用viewDidAppear

當view從其他view中移除之前時,會調用viewWillDisAppear,而之後會調用viewDidDisappear

所以只有記憶體不夠的時候或是程式被終止的時候,才會調用viewWillDisappear和viewDidDisappear

 

loadView和viewDidLoad的區別就是,loadView時view還沒有產生,viewDidLoad時,view已經產生了,loadView只會被調用一次,而viewDidLoad可能會被調用多次(view可能會被多次載入)。

程式碼群組織 -- 》如何設計良好的viewcontroller

1. init裡不要出現建立view的代碼。在init裡應該只有相關資料的初始化(非常重要),init裡不要掉self.view,否則會導致viewcontroller建立view。(因為view是lazyinit的)。

2. loadView中只初始化view,一般用於建立比較關鍵的view如tableViewController的tabView,UINavigationController的navigationBar。

3. viewDidLoad這時候view已經有了,最適合建立一些附加的view和控制項了。有一點需要注意的是,viewDidLoad會調用多次。

4. viewWillAppear這個一般在view被添加到superview之前,切換動畫之前調用。在這裡可以進行一些顯示器前的處理。比如鍵盤彈出,一些特殊的過程動畫。

5. viewDidAppear一般用於顯示後。

iOS ViewController生命週期

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.