说白了,storyboard和xib都是用来描述控制器的view。但是他们的加载过程却是不同的,加载的时候按照如何将view显示到window上,现分析如下:
storyboard加载:
// 1.创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 2.加载storyboard,注意Main代表的是storyboard的名称,系统默认加载的是main.storyboard。如果我们选择加载自定义的storyboard,需要现在.plist文件中,干掉main,然后在代码中加载自定义的storyboard名。另外:nil = [NSBundle mainBundle]
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
// 3.加载storyboard描述的控制器,这里有两种方式,方法一加载箭头指向的storyboard,方法二代表加载标记为vc1的storyboard
方法一: UIViewController *vc = [storyboard instantiateInitialViewController];
方法二: UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"vc"];
// 4.将控制器添加到窗口
self.window.rootViewController = vc;
// 5.将窗口设置为可见
[self.window makeKeyAndVisible];
xib加载:
// 1.创建窗口
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 2.加载名为ViewController的xib文件
UIViewController *vc = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
// 4.将控制器添加到窗口
self.window.rootViewController = vc;
// 5.将窗口设置为可见
[self.window makeKeyAndVisible];
相对于storyboard来说,xib的非代码工作量较大,图解如下:
Snip20160415_6.png
而对于storyboard来说,我们只需要绑定控制器即可
网友评论