此文学习来源为:http://study.163.com/course/introduction/1002858003.htm

此工程文件实现功能:

通过点击屏幕事件,调用ViewController相关生命周期函数(viewWillAppear、viewWillDisappear、viewDidDisappear、viewDidAppear)

todo...

遇到点小Bug:

1、viewDidLoad方法被多次调用

2、当每次点击橘色屏幕时,调用了viewWillAppear和viewDidAppear方法

暂时还不知道原因。。。

===========================ViewController.m脚本==============================

#import "ViewController.h"

//引入新创建的视图控制器(继承于ViewController)

#import "ViewC02.h"

//当屏幕被点击时,调用此函数

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

//创建视图控制器

ViewC02* vc = [[ViewC02 alloc] init];

//显示一个新的视图控制器到屏幕上

//P1:新的视图控制器对象

//P2:是否使用动画切换效果

//P3:切换结束后功能调用,不需要传nil值即可

[self presentViewController:vc animated:YES completion:nil];

}

//第一次程序加载视图时调用

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

self.view.backgroundColor = [UIColor blueColor];

NSLog(@"viewDidLoad!第一次加载视图!");

}

//当视图控制器的视图即将显示时,调用此函数

//视图分为:1、显示前 2、正在处于显示状态 3、已经被隐藏

//参数:表示是否用动画切换后显示

//每一次视图要显示时都会调用

-(void) viewWillAppear:(BOOL)animated

{

NSLog(@"viewWillAppear,视图即将显示!");

}

//当视图即将消失时,调用此函数

//参数:表示是否用动画切换后消失

//当前的状态:视图还是显示在屏幕上的

-(void) viewWillDisappear:(BOOL)animated

{

NSLog(@"viewWillDisappear,视图即将消失!");

}

//当视图已经显示到屏幕后的瞬间调用此函数

//参数:表示是否用动画切换显示的

//当前状态:已经显示到屏幕上了

-(void) viewDidAppear:(BOOL)animated

{

NSLog(@"viewDidAppear,视图已经显示!");

}

//当前视图已经从屏幕消失

//参数:表示是否用动画切换消失的

//当前状态:视图已经从屏幕上消失

-(void)viewDidDisappear:(BOOL)animated

{

NSLog(@"viewDidDisappear,视图已经消失!");

}

//内存过低警告接收函数

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

===========================ViewC02.m脚本==============================

创建新的视图控制器:

File-->New-->File(快捷键command + N),点击,选择ios/Source/Cocoa Touch Class,Next,然后Subclas of选择ViewController,Class取名ViewC02,Create。 

- (void)viewDidLoad {

[super viewDidLoad];

//控制器二的颜色为橙色

self.view.backgroundColor = [UIColor orangeColor];

}

//点击当前控制器二的界面屏幕时

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

//使当前的控制器消失掉

//P1:是否使用动画切换效果

//P2:切换结束后功能调用block块,不需要传nil值即可

[self dismissViewControllerAnimated:YES completion:nil];

}

学习总结:

  • 重点:UIViewController的界面切换
  • 难点:UIViewController的生命周期

源码链接地址:https://pan.baidu.com/s/1yrOLXZZeu9MiOWtMq5-EGA  密码:7t1l

05-11 15:53