ViewController在App開發中是相當重要的一環,不管是頁面的展現和數據之間的交互,ViewController提供了一個框架能夠管理和構建App應用。iOS中構建App提供了兩種方式一種是ViewController管理好比NavigationController和UITabBarController,另一種就是咱們常常打交道用到的自定義ViewController或者是經常使用UITableViewController展現咱們須要的數據。下面這種蘋果官網的圖片能夠增強理解:app
視圖的生命週期其實能夠理解爲Load-Present-Hidden(加載-展示-隱藏)三個階段,若是從ViewController中方法中執行的順序來看,順序應該是這樣的:框架
loadView→viewDidLoad→viewWillAppear→viewDidAppear→viewWillDisappear→viewDidDisappear→dealloc佈局
loadView:通常狀況下不用用到,除非須要重寫設置View;url
viewDidLoad/dealloc:視圖加載完成以後的設置和視圖銷燬的時候調用;spa
viewWillAppear/viewWillDisappear:視圖即將呈現和視圖即將消失;blog
viewDidAppear/viewDidDisappear:視圖展示在屏幕的時候和視圖徹底消失在屏幕的時候調用,默認不作任何操做;生命週期
若是看生命週期的話,網上有很張相似這樣的圖,具體能夠參考下,來源於蘋果官網:圖片
能夠重寫代碼看下效果:ip
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"viewDidLoad-keso"); } -(void)viewWillAppear:(BOOL)animated{ NSLog(@"viewWillAppear-FlyElephant"); } -(void)viewDidAppear:(BOOL)animated{ NSLog(@"viewDidAppear"); } -(void)viewWillDisappear:(BOOL)animated{ NSLog(@"viewWillDisappear"); } -(void)viewDidDisappear:(BOOL)animated{ NSLog(@"viewDidDisappear-http://www.cnblogs.com/xiaofeixiang/"); }
viewWillLayoutSubviews和viewDidLayoutSubviews若是使用到自動佈局,須要修改自動佈局中的約束條件,那麼能夠在viewWillLayoutSubviews中進行操做,最近遇到一個就是text文本框中文字過多的時候文字不能不能置頂,能夠在viewWillDidSubviews中操做:開發
- (void)viewDidLayoutSubviews { [self.myTextView setContentOffset:CGPointZero animated:NO]; }
生命週期中幾個方法的調用實際中須要看本身的操做,在正確的地方作正確的事,會事半功倍的,具體須要看本身的熟悉程度~
切換的目的就是想將合適的內容放到用戶的手機屏幕上,呈現出不一樣的內容也就是咱們的目標,通常狀況有會有三種方式,聯線(Segue),Modal(模態),Push(須要和NavigationController配合使用),自定義的Segue,正常狀況下通常會涉及前兩種,若是有特別的需求能夠研究一下第三種自定義,Push方式以前的文中講過,本文主要講一下Modal代碼實現的兩種方式,若是是非代碼凡事Control選擇一下Modal便可;
presentViewController方式,最開始加載是一個xib是沒有問題的,代碼以下:
MainViewController *mainController=[[MainViewController alloc]init]; mainController.modalTransitionStyle=UIModalTransitionStylePartialCurl; [self presentViewController:mainController animated:YES completion:nil];
UIModalTransitionStyleCoverVertical-默認的,從下來,往下去;UIModalTransitionStyleCrossDissolve-漸變出現和消失;
UIModalTransitionStyleFlipHorizontal-水平翻轉; UIModalTransitionStylePartialCurl-翻書效果;
FirstViewController對應的View不是xib在StoryBoard中,StoryBoard視圖中調用presentViewController若是仍是使用上面的初始化方式就是黑屏了,其實換成storyBoard中得instantiateViewControllerWithIdentifier便可~
FirstViewController *firstController=[self.storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"]; [self presentViewController:firstController animated:YES completion:nil];
好久沒寫文章,比較淺陋,若有不當,多多指正~