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];
好久没写文章,比较浅陋,若有不当,多多指正~