IOS 学习笔记 使用xib文件构建界面
目录
使用xib文件构建界面
1、将ViewController.h、ViewController.m、Main.storyboard三个文件delete掉
2、Deployment Info的Main Interface置空,也就是去掉Main
3、添加试图控制器
4、修改AppDelegate文件,将xib文件添加到window中
5、运行结果
6、 错误“This Class is not Key Value Coding-Compliant for the Key”
使用xib文件构建界面
目前做IOS开发iphone应用,xcode默认布局使用故事板来构建界面,老版本的工程中则使用的XIB文件来构建,XIB是在NIB的基础上发展而来,最初苹果公司采用的是NIB来构建界面,后来文件格式采用了xml,便更名为XIB。
默认在创建工程的时候采用的故事板Main.storyboard作为应用界面,更换成xib文件构建界面需要经过四个步骤,下面是oc版本的,
1、将ViewController.h、ViewController.m、Main.storyboard三个文件delete掉
2、Deployment Info的Main Interface置空,也就是去掉Main
注意:Main Interface置空,什么都不要写,重要的事情再说一遍:什么都不要写
如下图
3、添加试图控制器
工具栏 File > New > File 弹出下图,选择:Cocoa Touch Class
然后创建RootViewController如下图,一定有记得勾选XIB file
然后生成如下目录的文件
在XIB文件中加入几个控件,同故事板一样,拖拽进来即可
4、修改AppDelegate文件,将xib文件添加到window中
#import "AppDelegate.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.//最后一步将创建xib文件绑定到window界面上self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];self.window.rootViewController = [[UIViewController alloc]initWithNibName:@"RootViewController" bundle:nil];[self.window makeKeyAndVisible];return YES;
}@end
运行如果发现无法显示界面,检查一下步骤2和步骤4是否正确
5、运行结果
6、 错误“This Class is not Key Value Coding-Compliant for the Key”
注意上面在在布局好之后,如果不连接IBOutlet属性变量还好,一旦增加就会报错:“This Class is not Key Value Coding-Compliant for the Key”
self.window.rootViewController = [[UIViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
千万注意这样写会有个错误,可能还还很不好找,原因是不能像上面那这样写,应该写为:
self.window.rootViewController = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
原因是可能在别处看的是UIViewController,但是这个UIViewController是系统的,确实能直接用但是直接用了之后就会出现上爱你错误。
并且在头部加上:#import "RootViewController.h"
#import "AppDelegate.h"
#import "RootViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.CGRect screen = [[UIScreen mainScreen] bounds];self.window = [[UIWindow alloc]initWithFrame:screen];self.window.rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];[self.window makeKeyAndVisible];return YES;
}@end
IOS 学习笔记 使用xib文件构建界面相关推荐
- Dokcer学习笔记之Dokcerfile 文件构建
vim Dockerfile #First dockerfile FROM centos MAINTAINER chen RUN yum -y install wget RUN wget -S htt ...
- Vue学习笔记:使用CLI构建Vue项目
Vue学习笔记:使用CLI构建Vue项目 一.安装Vue CLI 要用到集成在node.js里的npm来安装Vue CLI. 1.下载并安装node.js 2.配置node.js的环境变量 3.启动命 ...
- IOS学习笔记39——拍照、从相册选图并对图片进行裁剪
2013第一篇,大家新年快乐!感谢一直关注我博客的同学们,有你们的支持我才有动力越做越好!有阵子没写博客了,因为前阵子着实比较忙,没时间整理,今天主要实现一个小Demo,我们知道在Instagram或 ...
- C++学习笔记之对文件的操作2
转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126680.html ** 什么都不说了,继续<C++学习笔记之对文件的 ...
- iOS学习笔记-自己动手写RESideMenu
代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...
- iOS学习笔记-地图MapKit入门
代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...
- iOS学习笔记-自定义过渡动画
代码地址如下: http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swi ...
- IOS学习笔记05---C语言程序的开发运行过程
IOS学习笔记05---C语言程序的开发运行过程 0 5.C语言3-C语言程序的开发运行过程 ----------------------------------------------------- ...
- IOS学习笔记02---语言发展概述,计算机语言简介.
IOS学习笔记02---语言发展概述,计算机语言简介. ------------------------------------------------------------------------ ...
最新文章
- oracle多种导入导出数据方法
- 编程实战一通讯录程序
- Veritas Storage Foundation 5.0 HA for Windows
- 跨浏览器开发工作小结
- 笔试题--Multicore简答题(下)
- 详解6G系统数据治理方案的设计要点和原则
- 怎么更改wifi频段_手机wifi延迟高怎么办
- 如何快速重置OUTLOOK2013,2016到初始配置状态,outlook 修改数据文件位置
- 树的基本定义表示方法
- Maven项目导入到Eclipse时Build出现the user operation is waiting for building workspace to complete的问题解决
- 《容器技术系列》一3.2 Docker Daemon的启动流程
- CSS3+JS制作的一款图标任意拖动,并且可以放在文件夹中
- sts4linux,STS3下载和安装,STS4升级
- android长截图工具下载,一键长截屏下载-一键长截屏 安卓版v1.0.0-PC6安卓网
- 腾达ap设置说明_腾达(Tenda)F6无线信号放大模式(Client+AP)设置教程 | 192路由网
- resource failed to call close
- 房屋租赁合同法律规定是怎样的
- spring security自定义登录失败返回错误信息
- 解决Intellij IDEA 一直在indexing....,导致idea很卡,无法操作
- 应用MATLAB建模与仿真
热门文章
- video标签样式属性设置
- 如何快速提升你的能力?
- 【转载】机器学习计算距离和相似度的方法
- 用剪影画漫画人物的发型你会吗?
- 王宝强离婚成了谁的狂欢?——通过阿里云·数加严肃解读数据背后的媒体传播路径...
- c语言编程输入5输出五行五列,C语言编程 在屏幕上打印五行*号,每行分别为5个,30个,10个,28个,16个。...
- 荣耀30lite支持鸿蒙,曝荣耀30 Lite也要来了:美人尖+高刷新率+48MP三摄
- 斗鱼、虎牙、欢聚时代,集体入冬?
- 路透社:中国暂停新视频游戏许可申请
- 官宣 ! 云盒子企业网盘Mac改版,最美云盘客户端~