什么是Interface Builder
简称IB,是Mac OS X和iOS平台下⽤于设计和测试⽤户界⾯的应⽤程序。
提供了拖放⾯板,可以将控件拖放到屏幕上。![这里写图片描述](https://img-blog.csdn.net/20151204194537079)
xib 和 .nib
IB创建.xib⽂件,包括视图布局,以XML格式存储。
程序运⾏后,.xib⽂件中的内容编译为.nib⽂件(⼆进制⽂件),存储在⼯程包中。
使⽤IB初始化视图控制器![这里写图片描述](https://img-blog.csdn.net/20151204194738890)
创建视图控制器
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:
(NSBundle *)nibBundleOrNil
nibNameOrNil是.xib⽂件的名字。注:nibNameOrNil如果填
nil,默认找与类同名的.xib⽂件(LoginViewController.xibLoginView.xib)。
可以直接使⽤init⽅法,默认找相关的.xib⽂件。
// 利用XIB文件加载视图控制器 并作为Window的根视图控制器
// [NSBundle mainBundle]在主目录中加载 如果填nil 默认从主目录中找
RootViewController *rootVC = [[RootViewController alloc] initWithNibName:@”RootViewController” bundle:[NSBundle mainBundle]];
// 设置根视图控制器
self.window.rootViewController = rootVC;
[rootVC release];
拖放控件![这里写图片描述](https://img-blog.csdn.net/20151204194902394)
插座变量
插座变量。⽤于控制IB中的UI控件。
IBOutlet,外联指针。连接插座变量和IB中的UI控件
设置:选中控件,按住command,向类中拖放,设置变量名。
把空间设置成属性
动作。⽤于响应UI控件的触发事件。
IBAction。连接⽅法和IB中的UI控件
设置:选中控件,按住command,向类中拖放,设置⽅法名。
设置代理![这里写图片描述](https://img-blog.csdn.net/20151204195708645)
⼆、StoryBoard的使⽤
什么是StoryBoard
在AppDelegate的-application:
didFinishLaunchingWithOptions:⽅法中不要再⽤代码初始化
⼀个window
将创建好的Storyboard在应⽤程序配置General中设置为
Main Interface
视图添加与控制和IB开发⼀样。
StoryBoard创建视图控制器
controller可以设置标识,通过标识从storyboard创建视图控制器对象。
UIStoryboard,storyboard对象。视图控制器有属性
storyboard。也可以通过⽂件名创建对应的storyboard⽂件对象。
[self.storyboard instantiateViewControllerWithIdentifier:**]
============================
Segue关联按钮
利⽤segue去push视图控制器。
选中按钮,按住command,从按钮向下⼀级⻚⾯连线。按钮不需要添加响应⽅法。
注:适⽤于不存在传值的⻚⾯切换。
Segue关联两个⻚⾯
要给segue设置唯⼀的标识符
利⽤segue去push视图控制器的时候,使⽤视图控制器的实例⽅法:
- ( void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;
==================================================
Segue实现传值
- (void)prepareForSegue:(UIStoryboardSegue *)segue
sender:(id)sender segue触发之后,下⼀个⻚⾯显⽰之前执⾏。
segue包含3个重要的属性:identifier、sourceViewController、destinationViewController。
通过destinationViewController获取下⼀个⻚⾯对象。实现传值。
拉线跳转 会触发这个方法(一般传值使用)
但是一个界面可以 去往很多界面 并且可以通过拉线完成 这时候 就需要判断一个要操作的是哪一根连线
需要用segue的identifier属性去判断
属性传值步骤
1.给segue(跳转的线)加一个 identifier(标识)
2.通过标识 判断出 你要操作的线
3.取出目的地控制器
4.利用目的地控制器传值
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@”PushToSecondVC”]) {
SecondViewController *secondVC = segue.destinationViewController;
secondVC.userName = self.userNameTF.text;
secondVC.passWord = self.paddWordTF.text;
// 防止循环引用
__block RootViewController *mySelf = self;
// block传值
secondVC.block = ^void(NSString *userName,NSString *passWord){
mySelf.userNameTF.text = userName;
mySelf.paddWordTF.text = passWord;
};
}
}
=========================================
⾃定义单元格
单元格指的是UITableView的cell
在Storyboard中,可以直接在
TableView上添加Prototype Cells
可以在Prototype Cells中的单元格中
添加⾃定义⼦视图
⾃定义单元格的注意事项
选中Prototype Cells中的单元格后在Xcode⼯具的右边的检查器⼯具中修改单元格的标⽰符,注意标⽰符要与该表格视图的其他单元格区分
如果有⾃定义单元格类的话,并且在⾃定义单元格类中添加了IB修饰符修饰的属性和⽅法,需要在Storyboard的单元格检查器中的Custom Class修改为⾃定义的类
===============================================
配置⾃动布局的⽅式
在Storyboard中进⾏配置,添加约束
约束:视图布局的规则。
利⽤约束可以指⽰:视图在同⼀⽔平⾏上对⻬、调整视图⼤⼩匹配其他视图等等
约束配置