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去描述哪个控制器的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文件。