作用:
•创建和管理视图。
•管理视图上显示的数据。
•设备方向变化,调整视图大小以适应屏幕。
•负责视图和模型之间的数据及请示的传递。
当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序:
1、 alloc 创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear 视图已在屏幕上渲染完成
当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
1、viewWillDisappear 视图将被从屏幕上移除之前执行
2、viewDidDisappea 视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放
1.创建一个根视图
原代码:
创建一个属性:@property(nonatomic ,retain)RootViewController *rootVC;
1.创建一个rootViewController对象
_rootVC =[[RootViewController alloc] init];
2.给indow设置根视图控制器
_window.rootViewController = _rootVC;
[_rootVC release];
2.创建一个RootViewController的类,引入头文件
3.ViewController的初始化
vc的初始化方法,这个方法一般自己就会调用了,不需要我们再额外的去调用,会初始化一些容器,比如数组,字典
原代码:
-(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self =[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.arr = [NSMutableArray array];
}
//打印方法名
NSLog(@"%s", __FUNCTION__);
return self;
}
4. 第一次使用view属性时候使用 ,创建view
原代码:
-(void)loadView{
// super调用父类
[super loadView];
NSLog(@"%s", __FUNCTION__);
// self.view 的加载
}
如果想重写父类的方法,首先要先用super去调用父类的方法,这样可以保证原功能不变,然后在方法里再写新的功能
5.视图的创建和辅设都在viewdidload方法里进行
原代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor =[UIColor yellowColor];
NSLog(@"%s", __FUNCTION__);
for (int i =1; i<4; i++) {
UITextField *textFieldi =[[UITextField alloc] initWithFrame:CGRectMake(100, 100+100*i, 150, 40)];
textFieldi.delegate =self;
textFieldi.layer.borderWidth =2;
textFieldi.layer.cornerRadius =10;
[self.view addSubview:textFieldi];
[textFieldi release];
}
// 辅一个button
UIButton *button =[UIButton buttonWithType:UIButtonTypeSystem];
button.frame =CGRectMake(100, 500, 150, 40);
[button setTitle:@"下一页" forState:UIControlStateNormal];
[button setTintColor:[UIColor blackColor]];
[self.view addSubview:button];
[button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
button.layer.borderWidth =2;
button.layer.cornerRadius =10;
}
6. 视图将要出现
原代码:
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"%s", __FUNCTION__);
}
7.试图将要消失
原代码:
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"%s", __FUNCTION__);
}
8.视图已经消失
原代码:
-(void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
NSLog(@"%s", __FUNCTION__);
}