一般情况下: Main.storyBoard中拖入的都是控制器
xib中拖入的都是UIView
加载方式:
1.创建Xib
2.往xib当中拖入一个View.
3.设置Xib的file's owner类型为要设置的那个控制器.
4.把View与file's owner连线. (注意, 只有设置了file's owner类型才能够进行拖线.)
initWithNibName:为要加载的Xib的名称.
MyViewController *vc = [[MyViewController alloc] initWithNibName:@"VC" bundle:nil];
initWithNibName
1.如果没有指定名称.指定为nil,那么它就会去先加载跟它相同名称的Xib.
2.如果没有跟它相同名称的Xib,那么它就会再去加载跟它相同名称去点Controller的名字的Xib.
3.控制器的init方法会调用initWithNibName:方法.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//1. 创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
//2. 设置窗口的根控制器
//2.1 通过xib加载控制器的view\
initWithNibName: 如果指定了特定的名称的xib,会去加载指定的xib\
如果为nil
//1.判断有没有当前控制器相同名称的xib,如果有,自动加载跟它相同名称的xib(ZYViewController.xib)
//2.如果没有跟它相同名称的xib.自动加载跟它相同名称并且是去掉controller(ZYView.xib)
// ZYViewController *vc = [[ZYViewController alloc] initWithNibName:@"One" bundle:nil];
// ZYViewController *vc = [[ZYViewController alloc] initWithNibName:nil bundle:nil];
// GZYViewController *vc = [[GZYViewController alloc] initWithNibName:nil bundle:nil];
// 底层会调用initWithNibName方法
GZYViewController *vc = [[GZYViewController alloc] init];
self.window.rootViewController = vc;
//3. 显示窗口
[self.window makeKeyAndVisible];
return YES;
}