视图控制器来分担AppDelegale的任务, 管理子视图, 所以也需要一个类似于containView的视图来管理子视图, 所以对于视图控制器自身也自带了一个view, 大小和屏幕大小相同, 通过self.view访问视图控制器的view
视图控制器不是视图, 在屏幕上是看不到的, 只要在屏幕上能看到的东西, 才是视图
//
// RootViewController.m
// LessonUIVIewController
//
// Created by lanouhn on 14-8-22.
// Copyright (c) 2014年 vaercly@163.com 陈聪雷. All rights reserved.
//
#import "RootViewController.h"
#import "LoginView.h"
@interface RootViewController ()
@end
@implementation RootViewController
//initWithNibName:bundle:为指定初始化方法, 不管调用该类的哪一个初始化方法, 该方法都会被调用
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
//当访问控制器的view时, 如果view为空, 还没有创建, 则调用loadView方法, 为视图控制器创建view
//执行完loadView之后, 就会立即执行viewDidLoad
//父视图loadView方法的实现, 是创建一个和屏幕大小一样的view
- (void)loadView
{
// [super loadView];//父类对loadView方法的实现就是创建一个UIView的对象, 并且作为视图控制器的view
//将LoginView视图对象指定为试图控制器的view
LoginView *loginView = [[LoginView alloc] initWithFrame:CGRectZero];
loginView.backgroundColor = [UIColor grayColor];
//给button添加点击事件
[loginView.button addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
//设置TextField代理
loginView.tf.delegate = self;
//将loginView指定为视图控制器的view
self.view = loginView;//调用setter方法
[loginView release];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//让键盘回收
LoginView *loginView = (LoginView *)self.view;
[loginView.tf resignFirstResponder];
}
- (void)login:(UIButton *)button
{
NSLog(@"click");
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
/**
* 视图控制器来分担AppDelegale的任务, 管理子视图, 所以也需要一个类似于containView的视图来管理子视图, 所以对于视图控制器自身也自带了一个view, 大小和屏幕大小相同, 通过self.view访问视图控制器的view
视图控制器不是视图, 在屏幕上是看不到的, 只要在屏幕上能看到的东西, 才是视图
*/
//当视图控制器的视图加载完成后触发(只要loadView方法被调用之后, 就会立即调用viewDidLoad)
//只是视图view创建完毕, 但是此时还没有添加到父视图上
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// self.view.backgroundColor = [UIColor grayColor];
}
//当视图控制器的view布局自身的子视图时, 该方法就会被触发(视图控制器的view将要显示上边的子视图时触发)
- (void)viewWillLayoutSubviews
{
//当重写父类的方法时, 若不知道父类对该方法是如何实现的, 在实现时, 先调用父类对该方法的实现
[super viewWillLayoutSubviews];
// self.view.frame = CGRectMake(0, 200, 320, 400);
NSLog(@"self.view%@", self.view);
NSLog(@"self.view.superview%@", self.view.superview);
}
/**
* 当应用程序收到内存警告(当内存吃紧, 内存不足)的时候触发, 释放一些暂时不使用(该资源已经分配)的系统资源, 共当前程序运行
*/
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
视图控制器的作用
最新推荐文章于 2020-08-18 08:46:11 发布