**建立的viewcontroller:
viewcontrollerwith *vc = [[viewcontrollerwith alloc]init];
在這個載入過程中 相關方法呼叫順序是:
init
initwithnibname:bundle:
loadview
viewdidload
當command+n建立viewcontroller的時候勾選了also create xib file ,系統就會幫我們建立與viewcontroller同名的xib檔案
對於這種控制器,常用的建立方式是:
viewcontrollerwithxib *vc = [[viewcontrollerwithxib alloc]initwithnibname:@"viewcontrollerwithxib" bundle:nil];
在這個載入過程中 相關方法呼叫順序是:
initwithnibname:bundle:
loadview
viewdidload
當然, 你也可以以下這種方式建立帶有xib的viewcontroller
viewcontrollerwithxib *vc = [[viewcontrollerwithxib alloc]init];
這樣也能載入出你在xib裡面建立的view
前提是你的控制器不能重寫loadview方法
因為用這種方式建立 系統會呼叫loadview幫你尋找和類同名的xib檔案載入
你若是重寫了loadview,那麼控制器就是漆黑一片
這種方式和**建立方式時,函式呼叫順序一致
在storyboard中構建好自己的控制器用以下**初始化:
uistoryboard *storyboard = [uistoryboard storyboardwithname:@"main" bundle:nil];//這裡的bundle 寫nil也可以代表是mainbundle
myviewcontroller *vc = [self.storyboard instantiateviewcontrollerwithidentifier:@"myviewcontroller"];
在這個載入過程中 相關方法呼叫順序是:
initwithcoder:
awakefromnib
loadview(這個方法結束時 控制器的view的子控制項才建立)
viewdidload
view載入的純**的方式:
myview *view = [[myview alloc]init];
view加贊完畢的時候
在這個載入過程中 相關方法呼叫順序是:
init
initwithframe:
是init呼叫了initwithframe:
xib載入方式:
uiview *view = [[[nsbundle mainbundle] loadnibnamed:@"myview" owner:self options:nil]lastobject];
解析乙個檔案的時候呼叫(只是建立了view)
在這個載入過程中 相關方法呼叫順序是:
initwithcoder:(這個時候子控制項沒有被建立)
awakefromnib(這個時候子控制項建立完畢, 一般會在這裡進一步對view進行初始化)
總結:
1.initwithnibname:bundle: (載入帶有xib控制器)
2.loadview (控制器的view為空的時候呼叫,幫控制器載入view)
3.initwithcoder: (是當從nib檔案中載入物件的時候會呼叫)
4.awakefromnib (當.nib檔案被載入的時候,會傳送乙個awakefromnib的訊息到.nib檔案中的每個物件)
5.initwithframe: (**建立view時呼叫,是懶載入,只有到需要顯示時,子控制項才不是 nil)
補充:
[viewcontroller initwithnibname:bundle]
返回的是控制器
;載入自定義xib注意設定:
1.
在空的xib中新增的是view ; (關鍵)
3. 設定:在view的show the connections inspector 的 outlets 中將view屬性拖拽到新增的view;(否則載入會奔潰)
4. 屬於延時載入;
[[nsbundle
mainbundle] loadnibnamed:
@"myview"
owner:
self
options:
nil]
返回的是繼承nsobject的陣列;
載入自定義xib注意設定:
1. 在自定義的 empty xib 中 新增什麼型別 本方法就會返回什麼型別。(多用於自定義view)
3. 設定:在view的show the connections inspector 的 outlets 中將view屬性拖拽到新增的view;(否則載入會奔潰)
// 起到四兩撥千斤的效果
方法在檢視跳轉的時候被觸發 , 注意條件:
只適用於storyboard跳轉
- (void)prepareforsegue:(uistoryboardsegue *)segue sender:(id)sender
示例:參口示例
iOS 控制器View載入順序詳細版
1 一般情況下呼叫 init方法或者呼叫initwithnibname方法例項化uiviewcontroller,不管呼叫哪個方法都為呼叫initwithnibname 方法定義如下 id initwithnibname nsstring nibnameornil bundle nsbundle n...
iOS 懶載入子控制器的View
笨方法 新增子控制器的view nsuinteger count self.childviewcontrollers.count cgfloat scrollvieww scrollview.width cgfloat scrollviewh scrollview.height for nsuint...
ios中建立控制器的幾種方式
1 通過storyboard建立 1 先載入storyboard檔案 uistoryboard storyboard uistoryboard storyboardwithname test bundle nil 2 初始化storyboard中的控制器 初始化 初始控制器 hlviewcontro...