视图控制器

  

   UIViewController(基类)

  1.管理视图

  2.分担AppDelegate的任务

   3.实现模块的独立,提高复用性

4.桥梁
    
    
 
    
 创建视图控制器对象
    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];
    
 
    
    
    self.view = view;    调用setter方法,.
    
    [view release];
 


[super loadView];  //父类对loadView方法的实现就是创建了一个UIView类型的对象,并且作为控制器的view
 

   
}




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


- (void)viewWillLayoutSubviews
{
    
    
 当重写父类方法时,如果不知道父类对该方法是如何实现时,先调用父类对给方法的实现.
    [super viewWillLayoutSubviews];
 
}




视图控制器分担Appdelegate的任务,管理子视图,所以也需要一个类似于view的视图来管理子视图,所以对于视图控制器自身就自带一个view 大小和屏幕大小相同.通过self.view访问控制器的view

视图控制器不是视图.在屏幕上是看不到的,只要在屏幕上能看到的东西,都是视图.

当视图控制器的视图加载完成后触发(只要loadView方法被调用之后,就会立即调用viewDidLoad)

只是视图view创建完毕,但是此时视图还没有添加到父视图上.

- (void)viewDidLoad
{
 
    [super viewDidLoad];
 
  Do any additional setup after loading the view.  做任何额外的设置后加载视图。
}


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

- (void)didReceiveMemoryWarning
{      
    [super didReceiveMemoryWarning];
  

Dispose of any resources that can be recreated.   处理任何资源都可以被重新创建。
}

你可能感兴趣的:(控制器)