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.新建一 ...
随机推荐
- Spring 的AOP
AOP:面向切面编程,相对于OOP面向对象的编程 Spring的AOP的存在的目的是为了解耦.AOP可以让一组类共享相同的行为.在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能为 ...
- intelij idea相关笔记--持续更新
一.快捷键: Ctrl+F 文件内查找 Ctrl+Shift+F 全局查找 Ctrl+Shift+N 查找文件 Ctrl+Alt+← 返回上一步 Ctrl+Alt+→ 返回下一步 二.编译相关: 如果 ...
- I-129表
http://www.uscis.gov/i-129 移民局使用的非移民性质的工作身份申请表(I-129)表格将于下月底正式作废,4月30日之后,公民和移民服务局只接受新的I-129表格. 据了解,非 ...
- linux 命令——30 chown (转)
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...
- World Wind Java开发之九——阶段小结(转)
http://blog.csdn.net/giser_whu/article/details/42785875 将近一个月没有更新了,一是因为项目的事情,二是期末考试复习,三是玩啦.上一篇博客搭建起了 ...
- NOIP2018赛前停课集训记(10.24~11.08)
前言 为了不久之后的\(NOIP2018\),我们的停课从今天(\(Oct\ 24th\))起正式开始了. 本来说要下周开始的,没想到竟提早了几天,真是一个惊喜.毕竟明天有语文考试.后天有科学考试,逃 ...
- Problem A: 李白打酒
Problem A: 李白打酒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 825 Solved: 373[Submit][Status][Web ...
- window下部署yapi
YApi 是一个可本地部署的.打通前后端及QA的.可视化的接口管理平台. 环境要求 nodejs(尽量最新版本) mongodb(尽量最新版本) 1.安装node https://www.runoob ...
- javaweb基础(32)_jdbc学习入门
一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
- java设计模式——抽象工程模式
一. 定义与类型 定义:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,无须指定他们具体的类 类型:创建型 二. 适用场景 客户端不依赖于产品类实例如何备创建,实现等细节 创建一系列相关的产品 ...