UIViewController的生命周期

原文:https://blog.caramba.io/ios-uiviewcontroller-lifecycle-261e3e2f6133#.9o89edexh
翻譯水平有限,望賜教

UIViewController是ios sdk最常用的對象之一。重點要理解控制器的生命周期事件以及如何使用他們。
我們將關注用于加載視圖的事件

1.生命周期事件順序

  1. -(void)loadView()
  2. -(void)viewDidLoad()
  3. -(void)viewWillAppear()
  4. -(void)viewWillLayoutSubviews()
  5. -(void)viewDidLayoutSubviews()
  6. -(void)viewDidApear()

2.如何使用

-(void)loadView?—?創(chuàng)建控制器管理的視圖

僅限于代碼式創(chuàng)建控制器時調用,重寫此方法,你可以手動創(chuàng)建自己的view

-(void)viewDidLoad?—?控制器的視圖加載到內存中時調用

view創(chuàng)建好后調用。記住,view的bounds在此生命周期中不是最終數據,這里是初始化和設置對象的好地方

- (void)viewWillAppear:(BOOL)animated?—?通知控制器view即將加入到視圖層級中

視圖顯示到屏幕上的時候調用。到這一步時,view的bounds已經定義好,但orientation未確定。視圖顯示到屏幕時,每次都會調用這個方法,所以不要添加任何本應該只執(zhí)行一次的代碼(或者正確的使用)

-(void)viewWillLayoutSubviews?—告知控制器,view即將布局他的子視圖

每次frame改變的時候都會調用此方法。例如屏幕旋轉或者標記了更新(setNeedsLayout())在這里,view的bounds已經確定,如果沒有用autoresizing masks或者constraint或者視圖大小改變了,你應該在這里更新子視圖布局

-(void)viewDidLayoutSubviews?—?通知視圖控制器view已布局好子視圖

布局好子視圖后,在此處做其他修改

-(void)viewDidAppear:(BOOL)animated?—?通知視圖控制器view已經加入到視圖層級中

執(zhí)行有關視圖呈現(xiàn)的其他任務(如動畫)此方法在顯示動畫后執(zhí)行。因此,在這里view對用戶已經可見
這里是從core data或者網絡服務器,加載請求數據顯示數據的好地方

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容