视图控制器的作用

视图控制器来分担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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值