IOS开发学习笔记025-xib和storyboard
stotyboard : 描述软件界面,大范围,比较适合整个软件的所有界面
xib文件的使用:描述软件界面,小范围,比较适合描述小界面
在xcode新建文件窗口可以看到两个文件,storyboard和empty

可以在xib文件中直接添加各种控件,并设置相关的属性。

xib文件的使用,加载文件使用NSBundle
// 创建一行,从xib中加载一行
- (UIView *)createRowView
{
// 加载xib文件,并且创建里面的所有对象,并按顺序保存到数组中
NSArray *allViews = [[NSBundle mainBundle] loadNibNamed:@"Empty" owner:nil options:nil];
//NSLog(@"%ld",allViews.count); // 取出红色的view进行
UIView *view = allViews[]; // 设置头像
UIButton *icon = (UIButton *)[view viewWithTag:];
int index = arc4random_uniform();
NSString *iconName = [NSString stringWithFormat:@"01%d.png",index];
[icon setImage:[UIImage imageNamed:iconName] forState:UIControlStateNormal]; // 设置姓名
UILabel *lab = (UILabel *)[view viewWithTag:];
int nameIndex = arc4random_uniform();
lab.text =_allNames[nameIndex]; // 监听删除按钮
UIButton *del = (UIButton *) [view viewWithTag:];
[del addTarget:self action:@selector(deleteClick:) forControlEvents:UIControlEventTouchUpInside]; return view;
}
如果想要在界面上实现连线响应事件,需要改变xib的File's ower 的Custom Class 为要连线的类
然后在loadNibNamed:@"empty" ower:self option:nil
其中self就是要连线的类或对象
File's ower
1、在xib文件中设置File's ower的class属性,目的是在xib文件中能找到owner的方法
2、建立File's owner 跟控件之间的联系
3、利用代码加载xib文件,传递owner参数(类型一定要匹配)
xib的封装实现
添加一个RowView类将rowView的操作封装起来
然后添加一个类方法返回初始化后的对象

然后实现方法如下
+ (UIView *)rowViewWithIcon:(NSString *)iconName andName:(NSString *)name
{
// 获得xib文件中得对象
UIView *child = [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:self options:nil][];
// 设置头像
UIButton *icon = (UIButton *)[child viewWithTag:];
[icon setImage:[UIImage imageNamed:iconName] forState:UIControlStateNormal]; // 设置标签
UILabel *lab = (UILabel *)[child viewWithTag:];
lab.text = name; return child; }
这样写的话对按钮的响应有两种方式
第一种是改变xib文件的class为按钮响应方法的类,然后通过连线方式响应
第二种是通过代码直接绑定事件,要注意
// 通过xib创建一行
- (UIView *)createRowView
{
// 返回view对象
NSString *iconName = [NSString stringWithFormat:@"01%d.png",arc4random_uniform()];
UIView *rowView = [RowView rowViewWithIcon:iconName andName:_allNames[arc4random_uniform()]];
// 设置头像
UIButton *icon = (UIButton *)[rowView viewWithTag:];
// 头像按钮监听事件
[icon addTarget:self action:@selector(iconClick:) forControlEvents:UIControlEventTouchUpInside];
// 设置删除按钮监听事件
UIButton *delBtn = (UIButton *)[rowView viewWithTag:];
// 添加删除按钮监听事件
[delBtn addTarget:self action:@selector(deleteClick:) forControlEvents:UIControlEventTouchUpInside];
return rowView;
}
源代码:
链接: http://pan.baidu.com/s/1kT3lFfh 密码: 927c
IOS开发学习笔记025-xib和storyboard的更多相关文章
- ios开发学习笔记(这里一定有你想要的东西,全部免费)
1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...
- iOS开发学习笔记:基础篇
iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...
- ios开发学习笔记(1)
objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...
- (ios开发学习笔记一)ios项目文件结构
转自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/31/2616389.html 下面是单个窗体项目例子,我们从这个项目开始,说明ios项目 ...
- iOS开发学习笔记
1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...
- IOS开发学习笔记042-UITableView总结2
一.自定义非等高的cell 如常见的微博界面,有的微博只有文字,有的有文字和图片.这些微博的高度不固定需要重新计算. 这里简单说一下几种方法.前面的步骤和设置等高的cell一样.现在来 ...
- IOS开发学习笔记041-UITableView总结1
一.UITableView的常用属性 1.分割线 // 分割线 self.tableView.separatorColor = [UIColorredColor]; // 隐藏分割线 self.tab ...
- IOS开发学习笔记038-autolayout 自动布局 界面实现
在storyboard/xib文件中实现自动布局 autolayout 1.注意事项 autolayout和frame属性是有冲突的,所以如果准备使用autolayout,就不要再代码中对控件的fra ...
- IOS开发学习笔记030-xib实现淘宝界面
使用xib文件实现界面,然后通过模型更新数据. 1.使得控制器继承自UITableViewController 2.创建xib文件,实现界面如下:一个UIImageView,两个lable 3.新建一 ...
随机推荐
- ArcGIS for Server新建站点异常,Failed to create the site.Failed to configure the server machine'XXXX',Server machine'XXXX' is not a local server machine.
系统环境:操作系统Win7 64位,装在虚拟机VM中,ArcGIS for Server 10.2.1 问题描述:ArcGIS for Server 10.2.1安装并授权完成后,站点初始化时显示 ...
- ionic 2 起航 控件的使用 客户列表场景(三)
我们来看看客户列表的搜索控件是怎么工作的吧. 1.打开customer.html <ion-content> <ion-searchbar [(ngModel)]="sea ...
- python super用法
普通继承 class FooParent(object): def __init__(self): self.parent = 'I\'m the parent.' print 'Parent' de ...
- 基于jeesit下的工作流开发步骤
首先jeesit是开源的OA系统,采用的框架是springMVC和mybatis,采用shiro安全验证. 1.新建流程所属表: 在数据库新建所需工作流的表之后,登录jeesit系统,在“代码生成”- ...
- Yii2 widgets [mztest/yii2-widget-file-upload]
Enjoy it. A widget for uploading files to your server. Github , Packagist Screenshots
- NYOJ-22-素数求和问题
原题地址 素数求和问题 描述 现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和. 输入 第一行给出整数M(0<M<10)代表多少组测 ...
- WordPress企业建站心得
回头聊聊我用WordPress做企业网站的事.说是企业网站,其实就是一个小的企业展示网站.事情要从我爸开了一家自行车店开始说起,自从他开了自行车店,不但开始学着玩起了微信(因为要做微信营销),又想到了 ...
- xtrabackup 安装
xtrabackup 安装 yum install -y perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Dige ...
- 忽略mysql库的同步
忽略mysql库的同步,请使用: stop slave sql_thread; change replication filter replicate_ignore_db=(mysql);
- Bootstrap历练实例:按钮(Button)插件单个切换
单个切换 如需激活单个按钮的切换(即改变按钮的正常状态为按压状态,反之亦然),只需向 button 元素添加 data-toggle="button" 作为其属性即可,如下面实例所 ...