viewDidAppear viewDidDisappear viewDidDisappear viewWillDisappear viewDidLoad
由
didFinishLaunchingWithOptions入口类方法进去程序,我将ViewController作为根视图控制器,分别创建了两个VC一个带XB,另外一个不带XB
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"------%s------",__FUNCTION__);
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"------%s------",__FUNCTION__);
}
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"------%s------",__FUNCTION__);
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"------%s------",__FUNCTION__);
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"---TonyVC%s---",__FUNCTION__);
}
ViewWillAppear和viewDidAppear是试图将要进行展示的时候调用,viewDidAppear是试图布局完成时进行调用
viewWillDisappear和viewDidDisappear是一个界面将要消失,也就是其生命周期@“结束的时候”进行调用。
下面是ViewController的视图显示情况
2015-07-29 15:06:16.885 TableViewDemo[51788:1620259] -------[ViewController viewDidLoad]------
2015-07-29 15:06:16.889 TableViewDemo[51788:1620259] -------[ViewController viewWillAppear:]------
2015-07-29 15:06:17.002 TableViewDemo[51788:1620259] -------[ViewController viewDidAppear:]------
根据打印出来的信息可以明显看出作为根视图VC 其加载顺序为viewDidLoad >viewWillAppear > viewDidAppear进行
再如,我如果由根VC Push到下一个VC(TonyVC)当中,TonyVC是怎么进行展示的,打印结果如下
2015-07-29 15:21:12.362 TableViewDemo[51904:1627657] ---TonyVC-[TonyViewController viewDidLoad]---
2015-07-29 15:21:12.362 TableViewDemo[51904:1627657] -------[ViewController viewWillDisappear:]------
2015-07-29 15:21:12.363 TableViewDemo[51904:1627657] ---TonyVC-[TonyViewController viewWillAppear:]---
有意思的是这三个方法是首先进行加载,起码,我的视觉看不到VC的时候,才出现这三个方法,也就是说,TonyVC先调用viewDidLoad之后,上一个根VC才进行消失,其次才加载如下两个方法。下面两个方法,和上面两个方法有一丝丝迟钝
2015-07-29 15:21:12.881 TableViewDemo[51904:1627657] -------[ViewController viewDidDisappear:]------
2015-07-29 15:21:12.881 TableViewDemo[51904:1627657] ---TonyVC-[TonyViewController viewDidAppear:]---
TonyVC 是带XB的VC
由TonyVC 到 根VC时 则方法执行迅速如下
2015-07-29 15:14:55.098 TableViewDemo[51876:1625568] ---TonyVC-[TonyViewController viewWillDisappear:]---
2015-07-29 15:14:55.099 TableViewDemo[51876:1625568] -------[ViewController viewWillAppear:]------
上面两个方法先执行,还是如果看到界面之后执行下面两个方法
2015-07-29 15:14:55.602 TableViewDemo[51876:1625568] ---TonyVC-[TonyViewController viewDidDisappear:]---
2015-07-29 15:14:55.602 TableViewDemo[51876:1625568] -------[ViewController viewDidAppear:]------
由TonyVC到第三个VC是什么情况呢?第三个VC是不带XB的其方法执行顺序如下
2015-07-29 15:32:27.743 TableViewDemo[51942:1630877] TonyVC-[TonySecendViewController viewDidLoad]
2015-07-29 15:32:27.743 TableViewDemo[51942:1630877] ---TonyVC-[TonyViewController viewWillDisappear:]---
2015-07-29 15:32:27.744 TableViewDemo[51942:1630877] TonySecendVC-[TonySecendViewController viewWillAppear:]
这三个方法首先执行,接下来执行
2015-07-29 15:32:28.247 TableViewDemo[51942:1630877] ---TonyVC-[TonyViewController viewDidDisappear:]---
2015-07-29 15:32:28.247 TableViewDemo[51942:1630877] TonySecendVC-[TonySecendViewController viewDidAppear:]
由TonySecendVCPush回去,的情况
2015-07-29 15:34:36.700 TableViewDemo[51942:1630877] TonySecendVC-[TonySecendViewController viewWillDisappear:]
2015-07-29 15:34:36.700 TableViewDemo[51942:1630877] ---TonyVC-[TonyViewController viewWillAppear:]---
其次为
2015-07-29 15:34:37.203 TableViewDemo[51942:1630877] TonySecendVC-[TonySecendViewController viewDidDisappear:]
2015-07-29 15:34:37.203 TableViewDemo[51942:1630877] ---TonyVC-[TonyViewController viewDidAppear:]---