iOS 【通过xib加载描述window根控制器的view】
2015-11-02 12:45
423 查看
1、通过Xib描述控制器View,在xib当中要做两步操作
① 绑定类。告诉xib去描述哪个控制器的View
② 连线。告诉xib当中哪个View去描述指定控制器的view
![](https://img-blog.csdn.net/20160618022217081?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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文件。
① 绑定类。告诉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文件。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音