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.新建一 ...
随机推荐
- ssh登录卡住问题
使用ssh登录远程centos服务器,卡住不动 系统centos 7 加-v查看登录过程,一直卡在这里 解决:我的是mtu问题 将eth0 mtu 默认1500修改为1200就可以了 ifconfig ...
- win10搜索不到蓝牙设备
多半是驱动不兼容的问题. 解决方法: 此电脑右键,设备管理器,然后将蓝牙下的驱动,右键.卸载设备. 安装驱动精灵,会自动检测到缺少蓝牙驱动,安装即可.
- IOS 监听键盘的通知(NSNotificationCenter)
通知方法: /** * 当键盘改变了frame(位置和尺寸)的时候调用 */ - (void)keyboardWillChangeFrame:(NSNotification *)note { // 设 ...
- Aizu 2304 Reverse Roads(无向流)
把有向图修改成无向图,并保证每条边的流量守恒并满足有向容量(即abs(flow(u,v) - flow(v,u)) <= 1)满足限制. 得到最大流,根据残流输出答案. 因为最后少了'\n'而W ...
- 解决Win10桌面右键卡顿一直转圈圈的
把系统重置之后,发现在桌面点击右键时一直转圈,但是在文件夹等非桌面位置都正常.可能是我之前修改注册表添加右键选项造成的,也可能不是,因为将修改的地方删除还是没有解决问题,555. 上网搜素一波,发现大 ...
- CVE-2018-4878
0x00前言 该漏洞影响 Flash Player 版本28.0.0.137以及之前的所有版本 0x01 poc Poc 这里只列出关键代码 public function triggeruaf() ...
- SQL SERVER 2012数据库自动备份的方法
SQL SERVER 2012数据库自动备份的方法 为了防止数据丢失,这里给大家介绍SQL SERVER2012数据自动备份的方法: 一.打开SQL SERVER 2012,如图所示: 服务器类型:数 ...
- centos下修改docker连接docker_host默认方式为tls方式
1.安装docker,请参考官网文档 centos下安装docker 2.安装完成应该可以使用docker的各种命令连接docker host.docker host运行在本机上,但与localhos ...
- ubuntu18.04 and Linux mint 19安装virtualbox
1.1 安装Virtualbox root@amarsoft-ZHAOYANG-K43c-:~# apt-get install virtualbox -y 1.2 显示Virtualbox桌面图 ...
- .pyc是什么鬼
.pyc是个什么鬼? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...