码迷,mamicode.com
首页 > 其他好文 > 详细

视图控制器

时间:2014-09-05 03:21:20      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:控制器

  
 //   UIViewController(基类)
//    1.管理视图
//    2.分担AppDelegate的任务
//    3.实现模块的独立,提高复用性
    //4.桥梁
    
    
    //抽象工厂设计模式:
    //提供一个抽象的基类(提供基本的功能),使用时使用具体的子类
    //比如UIView,UIViewController都是抽象的基类.
    
    
    //创建视图控制器对象
    RootViewController * rootVC =  [[RootViewController alloc]init];
    
    
 
    //指定为window的根视图控制器
    self.window.rootViewController = rootVC ;
    
   
    //释放所有权
    [rootVC release];
    
    





//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
{
    //将LoginView视图对象指定为视图控制器的view   不用指定Frame的大小,系统会自动修改器大小.
    
    LoginView * view = [[LoginView alloc]initWithFrame:CGRectZero];
    
    //给button添加点击时间
    [view.button addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
    //设置textfield代理
    view.fieldName.delegate = self;
    view.backgroundColor = [UIColor redColor];
    
    
    self.view = view; ///调用setter方法,.
    
    [view release];
   // [super loadView];  //父类对loadView方法的实现就是创建了一个UIView类型的对象,并且作为控制器的view
    NSLog(@"%s",__FUNCTION__);
    
    
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__FUNCTION__);
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__FUNCTION__);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__FUNCTION__);
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__FUNCTION__);
    LoginView * view  = (LoginView *)self.view;
    [view.fieldName resignFirstResponder];
}


//当视图控制器的view布局自身的子视图时,该方法就会被触发 (视图控制器的view将要显示上面的子视图时触发)
///////iOS 7 新出的方法.


- (void)viewWillLayoutSubviews
{
    
    
    //当重写父类方法时,如果不知道父类对该方法是如何实现时,先调用父类对给方法的实现.
    [super viewWillLayoutSubviews];
   // self.view.frame = CGRectMake(0, 200, 320, 400);
    
    
    
    NSLog(@"%@",self.view.superview);
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
- (void)login:(UIButton *)btn
{
//NSLog(@"%@",btn.superview);
    NSLog(@"点击了");
   
}
////// 视图控制器分担Appdelegate的任务,管理子视图,所以也需要一个类似于view的视图来管理子视图,所以对于视图控制器自身就自带一个view 大小和屏幕大小相同.通过self.view访问控制器的view
//视图控制器不是视图.在屏幕上是看不到的,只要在屏幕上能看到的东西,都是视图.


//当视图控制器的视图加载完成后触发(只要loadView方法被调用之后,就会立即调用viewDidLoad)
//只是视图view创建完毕,但是此时视图还没有添加到父视图上.

- (void)viewDidLoad
{
    NSLog(@"%s",__FUNCTION__);
    [super viewDidLoad];
  //  self.view.backgroundColor = [UIColor grayColor];
    // Do any additional setup after loading the view.  做任何额外的设置后加载视图。
}

//当程序收到内存警告(当内存吃紧,内存不足时)时触发.释放一些暂时不使用的系统资源.供当前程序运行.

- (void)didReceiveMemoryWarning
{        NSLog(@"%s",__FUNCTION__);
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.   处理任何资源都可以被重新创建。
}

视图控制器

标签:控制器

原文地址:http://qccccc.blog.51cto.com/6004423/1548917

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!