tomiOS开发经验总结IOS开发

iOS开发基础知识:UIWindow和UIViewControl

2015-07-18  本文已影响7895人  加斯加的猿

上篇文章讲程序运行的基本原理,留下了一堆代码没有去处理。现在可以去看看这些代码的意思了。

代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    // 1.创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    // 2.加载storyboard文件,创建控制器
    // name:就是storyboard文件名
    // bundle:主bundle,传入nil,表示主bundle
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

    // 通过storyboard对象创建控制器
    // instantiateInitialViewController:加载storyboard箭头指向的控制器
    UIViewController *rootVc = [storyboard instantiateInitialViewController];

    // 3.设置窗口的根控制器,并且显示窗口
    self.window.rootViewController = rootVc;

    // 4.显示窗口
    [self.window makeKeyAndVisible];

    return YES;
}

代码里提到了UIWindow和UIViewController两个类,他们是什么?有什么用呢?

UIWindow

UIWindow是什么:

将view添加到UIWindow:

- (void)addSubView:(UIView *)view;
@property(nonatomic,retain) UIViewController *rootViewController;

常用方法:

- (void)makeKeyWindow;
- (void)makeKeyAndVisible;

什么是keyWindow?

[UIApplication sharedApplication].keyWindow

获得window对象的方法

[UIApplication sharedApplication].windows
view.window;

UIViewController(控制器)

控制器的创建:

UIViewController *vc = [UIViewController alloc] init];
UIViewController *vc = [UIViewController alloc] initWithNibName:@"文件名" bundle:(nil默认mainbundle)];
// 先加载storyboard文件(Test是storyboard的文件名)
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"文件名" bundle:nil];

// 接着初始化storyboard中的控制器
// 初始化“初始控制器”(箭头所指的控制器)
ViewController *vc = [storyboard instantiateInitialViewController];

// 通过一个标识初始化对应的控制器
// ViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"标识"];

控制器view的加载:一张图告诉你控制的view是怎么加载的

控制器view的加载过程

创建控制器后,首先判断控制器是否已经有view了,如果没有,会先调用控制器的loadView方法。然后判断loadView里面是否提供了加载view的方法,如果没有,会加载控制器的storyboard文件。如果storyboard文件也没有可加载的view,就会根据xibName查找对应的xib文件。

认真看完上面的文字再去看看文章开头的代码吧。如果有错误或理解不到位的地方请大家批评指正。

上一篇 下一篇

猜你喜欢

热点阅读