ios開發之控制器View的多種創建 -- 詳解

 昨天我寫了那個控制器的多種創建方式,今天我也就趁熱打鐵,把控制器View的多種創建方式也說一下吧, 詳情分析一下控制器的View的加載過程。

1. 通過xib加載

通過xib也有很多加載方式的,我先說說最簡單,明確的加載方式,爲了方便閱讀和理解,我還是配上截圖來解釋。

* 直接通過xib的完整名稱

> 首先先創建一個自定義的控制器(OneViewController)注意:我這裏的控制器名稱,即下面xib的名稱



> 接着就創建一個xib 




> 設置TextView的各個屬性來與待會的其他view加以區分,然後配置TextView 的File's Owner的class 以及他的view連線   使之可以被控制器加載view 



然後在相應的位置填寫代碼, 如下圖 


然後運行就完成指定xib的創建了, 效果如下 



* 現在我們再另外創建兩個新的xib 注意其名稱(OneView,OneViewController )和我們控制器的名稱(OneViewController)

* 創建完 也要和上一個樣設置自己的屬性 和File's Owner的class 爲我們的控制器(OneViewController) 以及連接View  




> 接下來我們來修改我們剛纔的代碼 把

initWithNibName:@"TextView" bundle:nil 改爲 init 


然後運行, 結果如下 


上圖加載的這個view 就是我們的OneView.xib的view

現在我們把OneView.xib的文件刪了, 然後清除一下程序(command + shift +K)然後再次運行程序(command + R) 



結果如下 


上圖的view就是我們OneViewController.xib的view

跟上面一樣,現在我們把OneViewController.xib的文件刪了, 然後清除一下程序(command + shift +K)然後再次運行程序(command + R)結果如下 



上面是系統自己創建了應該“空白”的view, “空白”就是什麼也沒有, 之所以是黑色是因爲我們的window的背景顏色爲黑, 現在我們設置我們控制器的view爲紅色來證明它被創建了,然後運行 


效果如下 


現在我們來重寫控制器的 - (void)loadView;方法 


然後運行, 效果如下, 說明系統可以通過-(void)loadView這個方法來創建view的 



好了, 演示到現在,我就總結一下控制器view的具體加載順序 

首先系統調用控制器的loadView方法去創建,如果沒有就會去調用storyBodard; 切記(這裏的stroryBoard)如果是本來就有的,就只能用於系統自己創建的viewController控制器, 本次例子都是在自定義的控制器(OneViewController)下創建的View, 因爲我們並沒有創建自定義的storyboard文件,所以就會自己查找並加載xib的文件,如我們在代碼指定了xib的文件名稱,就會根據nibName對應的xib的描述去創建, 如果我們的代碼是用init實力化對象的話, 系統會先根據自定義控制器(OneViewController)的名稱去掉Controller的名稱的xib(OneView.xib),根據OneView.xib的描述去創建, 如沒有該文件,就會查找與自定義控制器名稱一樣的xib文件(OneViewController.xib),然後根據OneViewController.xib的描述去創建。 如果還是沒有該文件的話,系統就會自己創建一個空白的View。 


請注意:我上面的文字描述是根據我自己的實例描述的, 我自定義的控制器名稱爲OneViewConteroller, 而下面的輔助圖中是控制器HMViewController的view的創建, 原理都是一樣的 

HMViewControllerview創建






如果需要源代碼的可以到下面的百度雲鏈接下載:

鏈接: http://pan.baidu.com/s/1pJmoAKF 密碼: sng2

感謝你們的閱讀! 希望我們共同努力, 共同進步!

你們的評論是對我的最大支持!!

發佈了28 篇原創文章 · 獲贊 21 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章