視圖控制器來分擔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
視圖控制器的作用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.