標籤:
一、視圖控制器
UIViewController的介紹:
UIViewController即視圖控制器,它在MVC(Model View Controller)模式中充當控制者的角色,它負責控制視圖的顯示,以及響應使用者在該視圖中所有可能的動作。使用視圖控制器,我們可以很方便的管理檢視及其子視圖。
UIViewController的生命週期:
運行APP--載入視圖loadView--調用viewDidLoad方法--調用viewWillAppear方法--調用viewDidAppear方法--正常運行--視圖從螢幕中移除(viewWillDisappear、viewDidDisappear)--視圖被銷毀(dealloc)
上述方法包括如下幾種,這些方法都是UIViewController類的方法:
- (void)viewDidLoad;//視圖已經載入完成
一個APP在載入時會先通過loadView方法或者載入IB中建立的初始介面的方法,將視圖載入到記憶體中。然後會調用viewDidLoad方法來進一步的設定。通常,我們對於各種初始資料的載入,初始設定等很多內容,都會在這個方法中實現,所以這個方法是一個很常用很重要的方法。
注意:這個方法只會在一個控制器建立的時候調用一次,以後都不會再調用它了,所以只能用來做初始設定。
- (void)didReceiveMemoryWarning;
在記憶體足夠的情況下,軟體的視圖通常會一直儲存在記憶體中,但是如果記憶體不夠,一些沒有正在顯示的viewcontroller就會收到記憶體不夠的警告,然後就會釋放自己擁有的視圖,以達到釋放記憶體的目的。但是系統只會釋放記憶體,並不會釋放對象的所有權,所以通常我們需要在這裡將不需要在記憶體中保留的對象釋放所有權,也就是將其指標置為nil.
這個方法通常並不會在視圖變換的時候被調用,而只會在系統退出或者收到記憶體警告的時候才會被調用。但是由於我們需要保證在收到記憶體警告的時候能夠對其作出反應,所以這個方法通常我們都需要去實現。
- (void)viewWillAppear:(BOOL)animated;
系統在載入所有資料後,將會在螢幕上顯示視圖,這時會先調用這個方法。通常我們會利用這個方法,對即將顯示的視圖做進一步的設定。例如,我們可以利用這個方法來設定裝置不同方向時該如何顯示。
另一方面,當APP有多個視圖時,在視圖間切換時,並不會再次載入viewDidLoad方法,所以如果在調入視圖時,需要對資料做更新,就只能在這個方法內實現了。所以這個方法也很常用。
- (void)viewDidAppear:(BOOL)animated;
有時候,由於一些特殊的原因,我們不能在viewWillAppear方法裡對視圖進行更新,那麼可以重寫這個方法,在這裡對正在顯示的視圖進行進一步的設定。
- (void)viewWillDisappear:(BOOL)animated;
在視圖變換時,當前視圖在即將被移除、或者被覆蓋時,會調用這個方法進行一些善後的處理和設定。
- (void)viewDidDisappear:(BOOL)animated;
我們可以重寫這個方法,對已經消失,或者被覆蓋,或者已經隱藏了的視圖做一些其他動作。
- (void)dealloc;
這個方法用於釋放當前控制器中的執行個體對象。
IB解釋:IBAction中IB的全稱為:Interface Builder。
IB:是Mac OS X平台下用於設計和測試使用者介面的應用程式。IB能夠使開發人員簡單快捷的開發出符合Mac OS X human-interface guidelines的GUI。通常只需要通過簡單的拖拽(drag-n-drop)操作來構建GUI就可以了。IB使用Nib檔案儲存GUI資源,同時適用於Cocoa和Carbon程式。在需要的時候,Nib檔案可以被快速地載入記憶體。
IOS開發--視圖控制器和基礎視圖