37.拖放控件Interface Builder

本文介绍了Interface Builder(IB)在MacOSX和iOS平台下用于设计和测试用户界面的方法,包括创建.xib文件、初始化视图控制器、拖放控件、插座变量、动作、设置代理以及StoryBoard的使用等。同时详细解释了如何利用XIB文件加载视图控制器,如何通过Storyboard创建视图控制器,并在应用中实现界面切换与数据传递。

什么是Interface Builder

简称IB,是Mac OS X和iOS平台下⽤于设计和测试⽤户界⾯的应⽤程序。

提供了拖放⾯板,可以将控件拖放到屏幕上。这里写图片描述

xib 和 .nib

IB创建.xib⽂件,包括视图布局,以XML格式存储。

程序运⾏后,.xib⽂件中的内容编译为.nib⽂件(⼆进制⽂件),存储在⼯程包中。

使⽤IB初始化视图控制器这里写图片描述

创建视图控制器

- (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];

拖放控件这里写图片描述

插座变量

插座变量。⽤于控制IB中的UI控件。

IBOutlet,外联指针。连接插座变量和IB中的UI控件

设置:选中控件,按住command,向类中拖放,设置变量名。

这里写图片描述

把空间设置成属性

这里写图片描述

动作。⽤于响应UI控件的触发事件。

IBAction。连接⽅法和IB中的UI控件

设置:选中控件,按住command,向类中拖放,设置⽅法名。

这里写图片描述
这里写图片描述

设置代理这里写图片描述

⼆、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中进⾏配置,添加约束

约束:视图布局的规则。

利⽤约束可以指⽰:视图在同⼀⽔平⾏上对⻬、调整视图⼤⼩匹配其他视图等等

约束配置

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

SizeClass

九宫格 控制苹果产品的屏幕(适配)

4个格子 BaseVie 状态下 是一个基础状态 这是你无论添加的是控件 还是给控件添加约束条件 都可以被其他状态所继承下来的

横2个格子 是所有iPhone横屏状态下 你多增加的控件和约束条件 是不被其他状态所继承 只有横屏才会显示

竖3个格子 是所有iPhone竖屏下 你多增加的控件和约束条件 是不被其他状态所继承 只有竖屏才会显示

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值