37.拖放控件Interface Builder
2015-12-04 20:28
585 查看
什么是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竖屏下 你多增加的控件和约束条件 是不被其他状态所继承 只有竖屏才会显示
相关文章推荐
- MySql提示:The server quit without updating PID file(…)失败
- UiAutomator使用步骤
- (2)轻松构建DuiLib HelloWorld By DuiCreator(下)
- (1)轻松构建DuiLib HelloWorld By DuiCreator(上)
- HDU 5057 Argestes and Sequence 分块
- 关于UI适配的文档
- UITextView 光标定位
- ugui和ngui手写虚拟摇杆功能比较
- UI - UISearchBar
- LeetCode 187 Repeated DNA Sequences
- hdu2604 Queuing
- 关于使用UIAlertView之后pop或者push时键盘闪退问题解决方法
- MUI移动开发框架——微信支付(android部分)
- android-UI组件实例大全(十五)------其他对话框:ProgressDialog,Date/TimePickerDialog
- android-UI组件实例大全(十四)------对话框的父类:AlertDialog
- SoapUI———mock数据工具
- android-UI组件实例大全(十三)------消息提示框:Toast和Notification
- android-UI组件实例大全(十二)------ScrollView滚动视图
- android-UI组件实例大全(十一)------Adapter类Four之Gallery画廊视图
- android-UI组件实例大全(十)------Adapter类Four之Spinner列表选项框