视图控制器的作用

来源:互联网 发布:可以喝的书 知乎 编辑:程序博客网 时间:2024/05/07 20:51
视图控制器来分担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

0 0