ios 控制器Controller的管理 理解

转自:http://www.maxiaoguo.com/clothes/249.html

首先说下ios 程序的加载过程

首先会调用main.h  来启动一系列东西,然后调用AppDelegate 文件,MJAppDelegate 加载的时候会调用 didFinishLaunchingWithOptions方法,此方法 用来查找window显示在手机屏幕上的,显示的时候实际上是从window中获取的 Controller,当自定义Controller的时候 就需要塞到self.window.rootViewController 中

MJAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//    UIStoryboard *story = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
//    self.window.rootViewController = [story instantiateInitialViewController];
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    
    // 这行代码仅仅是创建控制器
    MJOneViewController *one = [[MJOneViewController alloc] init];
    
//    one.view.backgroundColor = [UIColor redColor];
    
    // 设置窗口的根控制器
    self.window.rootViewController = one;
    
//    one.view.backgroundColor = [UIColor blueColor];
    
    // 显示窗口
    [self.window makeKeyAndVisible];
    
    
    return YES;
}

自定义控制器有两种方法。

一种是 通过加载xib来获取view,另一种是 通过代码来 创建view

第一种 ,创建的时候选择生成xib


第二种代码创建

在ViewController的生命周期的中的 viewDidLoad 方法中创建

/**
 *  自定义view
 */
- (void)loadView
{
    self.view = [[UIImageView alloc] init];
    self.view.backgroundColor = [UIColor greenColor];
}
ViewController 的生命周期 初始化

viewcontroller的加载规则

程序请求controller的view
如果view在内存中,则直接加载。相反,如果不存在,则UIViewController调用loadView方法
loadView方法执行如下操作:
如果你重载了这个方法,则必须创建必要的view并且将一个非nil值传给UIViewController的view属性。
如果你没有重载这个函数,UIViewController会默认使用UIViewController的nibName和nibBundle属性尝试从nib文件加载view。如果没有找到nib文件,则ViewController会通过以下两个步骤找到与其关联的nib。
A 如果类名包含Controller,例如ViewController的类名是MyViewController,则查找是否存在MyView.nib;
B 找跟ViewController类名一样的文件,例如MyViewController,则查找是否存在MyViewController.nib。
如果没有可用的nib文件,那么它创建一个空的UIView作为它的view。

加载view的机制


UIviewController的生命周期



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值