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

视图控制器的View创建方式

时间:2015-12-19 20:29:51      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

UIViewContrller 有三种创建方式:

1.通过alloc init直接创建。

2.通过故事版创建。

3.通过xib文件描述。

 

这是appDelegate.m的内容

  //window的颜色是绿色
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor greenColor];
    
    
    /**
     第一种:直接alloc init 创建控制器,控制器会自动创建一个view,上面什么也没有
     */
   // XBViewController * vc = [[XBViewController alloc]init];
    
    /**
     *  第二种:通过故事版创建控制器,这时候控制器的视图就是故事版上面视图描述的那样
     故事版上面的控制器要和本类进行关联
     */

    UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"XBVC" bundle:nil];
    XBViewController *vc = [storyBoard instantiateViewControllerWithIdentifier:@"XBVC"];
    self.window.rootViewController = vc ;//给根控制器赋值
    
    /**
     第三种:通过xib文件的方式创建
     步骤:
     1.xib的file owner要设置成本类,并且需要手动
     2.进行将本类的view属性个xib上的视图进行关联
     */
    
    XBViewController * vc = [[XBViewController alloc]initWithNibName:@"XBViewController" bundle:nil];
    
    /*当所在的xib的名字和视图控制器本身名字一致的时候直接调用init也会通过
     默认的xib进行创建
     */
    XBViewController * vc  = [[XBViewController alloc]init];
    
    /*
     当没有和控制器的文件名字一样的xib文件,若有XBView这样类型也是可以的
     */
    XBViewController * vc  = [[XBViewController alloc]init];
    
    self.window.rootViewController = vc ;
    [self.window makeKeyAndVisible];//呈现根控制器

 

XBViewController.m

/**
 *  loadView方法里用来建立自己需要的视图,当需要进行延长加载视图的时候可以在这里自己
 定义。只要重写了这个方法,不论控制器是从故事版还是xib创建。统统无效。
 
 这个方法出现在viewDidLoad前,在这里self.view 是空的,需要自己创建
 
 而且必须创建,否则会陷入死循环!!,除非调用了[super loadView];
 
 该方法结束后,必须保证self.view不为空,否则会自己调用自己
 
 */

- (void)loadView
{
//    [super loadView]; //不写这个代码而且不为self.view 创建对象会死机
////    self.view = [[UIView alloc]init];
//    self.view.backgroundColor = [UIColor blueColor];
//    UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(20, 300, 300, 30)];
//    label.text=@"现在的视图是loadView里面创建的";
//    [self.view addSubview:label];
   NSLog(@"loadView");
}
//视图加载完成后会调用这个方法,不论是通过系统自己生成的默认的view的方式,还是故事版,xib。
- (void)viewDidLoad {
    [super viewDidLoad];
    UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(20, 100, 250, 30)];
    label.text=@"这里viewDidLoad里面的view";
    [self.view addSubview:label];
    NSLog(@"视图加载完成");
}

控制器视图的创建方式:

技术分享

 

控制器的生命周期图

技术分享

 

视图控制器的View创建方式

标签:

原文地址:http://www.cnblogs.com/heartstone/p/ABC.html

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