viewController啟動方法分析

2022-08-17 02:27:18 字數 1666 閱讀 3423

**:

建立乙個類和例項化乙個類。 在ib中,孤零零的建立了乙個.nib檔案,沒有和其他科被例項化的類有直接或間接關係的時候,這個類或這些類是沒有機會被例項化的,所以這種情況只是通過ib建立了類,還沒有例項化。真正的例項化,需要在xcode用**來讀取這個.nib檔案。

initwithnibname

初始化uiviewcontroller,執行關鍵資料初始化操作。

注意在viewcontroller中不管呼叫是init 還是initwithnibname,都會呼叫這個方法。

注意這裡不要做view相關操作,view在loadview方法中才初始化,這時loadview還未呼叫。

如果是通過呼叫initwithnibname:bundle指定nib檔名初始化的話,viewcontroller會根據此nib來建立view。如果name引數為nil,則viewcontroller會通過以下兩個步驟找到與其關聯的nib:

1)如果viewcontroller的類名以「controller」結尾,例如viewcontroller的類名是myviewcontroller,則查詢是否存在myview.nib;

2)找跟viewcontroller類名一樣的檔案,例如myviewcontroller,則查詢是否存在myviewcontroller.nib

loadview
方法用於建立乙個uiviewcontroller的介面view。

無論ib,還是**建立,在self.view == nil時,都會呼叫》loadview方法。ib建立檢視時,loadview仍會被呼叫,此時ib定製的檢視還沒有建立完成,若是在loadview方法中新增檢視建立**,會將ib定製的檢視覆蓋掉。 所以,**定製檢視,一般在loadview裡寫; ib定製檢視時,不要改寫該方法。

[super loadview];這個父類中的方法不要忘記了。

viewdidload
**/ib建立檢視時,viewdidload被呼叫(這裡的載入屬於例項化)時,self.view已經建立完成。 可以在該方法中進一步定製view檢視。

在view即將新增到檢視層級中(顯示給使用者)且任意顯示動畫切換之前呼叫(這個時候supperview還是nil)。這個方法中完成任何與檢視顯示相關的任務,例如改變檢視方向、狀態列方向、檢視顯示樣式等

viewwilllayoutsubviews

view即將布局其subviews。比如view的bounds改變了(例如狀態列從不顯示到顯示,檢視方向變化),要調整subviews的位置,在調整之前要做的一些工作就可以在該方法中實現。

viewdidlayoutsubviews
view已經布局其subviews。比如view的bounds改變了(例如狀態列從不顯示到顯示,檢視方向變化),已經調整subviews的位置,在調整完成之後要做的一些工作就可以在該方法中實現。

viewwilllayoutsubviews

View Controller 生命週期

在srotyboard裡面放置任何控制項時,其實是把它冷凍起來,當viewcontroller需要使用時才會解凍 怎麼 解凍呢?它會呼叫 void awakefromnib 那 幾何初始化 控制項位置應該寫在 呢?ios6以後出現了兩種方法 void viewwilllayoutsubviews v...

取得viewController展示view

非檢視類中想要隨時展示乙個view時,可以直接宣告乙個view,然後只需要將被展示的view加到當前view的子檢視,或者想把乙個view隨時加到乙個viewcontroller時,這樣就需要獲得當前螢幕的這個viewcontroller了,這個方法在網上找到了,自己用了的確可以用 獲取當前螢幕顯示...

獲得當前ViewController

easy ti get your current view controller in display 使你的view controller 繼承自 baseviewcontroller make your viewcontroller inheritance baseviewcontroller ...