iOS 【通过xib加载描述window根控制器的view】

来源:互联网 发布:南风知我意2 txt下载 编辑:程序博客网 时间:2024/05/20 09:45
1、通过Xib描述控制器View,在xib当中要做两步操作
绑定类。告诉xib去描述哪个控制器的View
连线。告诉xib当中哪个View去描述指定控制器的view


2、代码设置
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    // 1、创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    // 2、设置根控制器
    // 未指定xib,那么按照initWithNibName方法的加载规则进行加载
//    WZYViewController *vc1 = [[WZYViewController alloc] init];
    // 指定了xib,直接加载同名xib。如果同名的xib并不存在,程序会崩溃报错。
    WZYViewController *vc1 = [[WZYViewController alloc] initWithNibName:@"WZYView" bundle:nil];
    self.window.rootViewController = vc1;
    
    // 3、显示窗口
    [self.window makeKeyAndVisible];
    
    return YES;
}

3、加载原理
① 如果直接调用initWithNibName指定xib名称去加载, 那么就会去加载指定名称的xib。如果指定的xib名称不存在,那么就会报错
② 如果调用init去加载xib,init方法内部会调用initWithNibName。此时由于initWithNibName并不是我们手动去调用的,所以说加载xib的名称默认为nil

当有多个xib文件绑定了某个控制器类。如果xib名称指定为nil,系统会先去判断有没有跟控制器类同名的xib,如果有,就会去加载这个同名的xib文件。

如果没有,再去判断,有没有跟控制器类名同名,并且去掉@"Controller"后缀的xib文件。

如果还没有,就会创建一个空的View。而不会加载项目中不相关的别名xib文件。



6 0