1. 程式人生 > >IOS 之 通過 storyboard 自定義控制器以及 loadView 方法簡述

IOS 之 通過 storyboard 自定義控制器以及 loadView 方法簡述

通過 UIStoryboard 物件,就能載入 storyboard 檔案。

注意:必須要有 storyboard,建立 UIStoryboard 物件才有意義,alloc init 建立 UIStoryboard 物件沒有意義。

兩個方法的解析:
(1)instantiateInitialViewController:預設載入箭頭指向的控制器;
(2)instantiateViewControllerWithIdentifier:根據標識在storyboard 查詢控制器,並且建立。

注意:標識不能亂傳,會報錯的,必須 storyboard 有這個標識才行。

下圖演示模仿系統載入 main.storyboard 的具體步驟:
這裡寫圖片描述


首先將預設的 Main Interface 置為空。

這裡寫圖片描述
由此便模仿了系統對 main.storyboard 的預設載入。

下面講解一下 loadView 方法的相關知識。

loadView 方法在控制器的 view 為 nil 的時候被呼叫。此方法用於以程式設計的方式建立 view 的時候用到。loadView 是使用程式碼生成檢視的時候,當檢視第一次載入的時候呼叫的方法。用於使用寫程式碼來實現控制元件。用於使用程式碼生成控制元件的函式。

1. loadView 作用:一般用來建立自定義的view;

2. loadView 什麼時候呼叫:當控制器的 view 沒有建立的時候,就會呼叫 loadView 去建立控制器的 view;

3. loadView 使用注意:如果重寫 loadView 裡面沒有建立控制器的view,就不能使用 self.view,會造成死迴圈。

- (void)loadView
{
    self.view.backgroundColor = [UIColor redColor];
    // 此處會產生死迴圈
    // 原因:self.view 沒有獲取到控制器的 view,就會呼叫 loadView 建立控制器的 view,相互呼叫導致死迴圈.
}

loadView 底層實現

判斷下有沒有指定 storyboard,如果有,就會幫你建立 storyboard 描述的控制器的view,如果沒有,建立一個空的 view。