視圖控制器的作用

視圖控制器來分擔AppDelegale的任務, 管理子視圖, 所以也需要一個類似於containView的視圖來管理子視圖, 所以對於視圖控制器自身也自帶了一個view, 大小和屏幕大小相同, 通過self.view訪問視圖控制器的view
    視圖控制器不是視圖, 在屏幕上是看不到的, 只要在屏幕上能看到的東西, 纔是視圖
//
//  RootViewController.m
//  LessonUIVIewController
//
//  Created by lanouhn on 14-8-22.
//  Copyright (c) 2014年 [email protected] 陳聰雷. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章