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的更多相关文章

  1. ios开发学习笔记(这里一定有你想要的东西,全部免费)

    1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...

  2. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  3. ios开发学习笔记(1)

    objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...

  4. (ios开发学习笔记一)ios项目文件结构

    转自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/31/2616389.html 下面是单个窗体项目例子,我们从这个项目开始,说明ios项目 ...

  5. iOS开发学习笔记

    1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...

  6. IOS开发学习笔记042-UITableView总结2

    一.自定义非等高的cell         如常见的微博界面,有的微博只有文字,有的有文字和图片.这些微博的高度不固定需要重新计算. 这里简单说一下几种方法.前面的步骤和设置等高的cell一样.现在来 ...

  7. IOS开发学习笔记041-UITableView总结1

    一.UITableView的常用属性 1.分割线 // 分割线 self.tableView.separatorColor = [UIColorredColor]; // 隐藏分割线 self.tab ...

  8. IOS开发学习笔记038-autolayout 自动布局 界面实现

    在storyboard/xib文件中实现自动布局 autolayout 1.注意事项 autolayout和frame属性是有冲突的,所以如果准备使用autolayout,就不要再代码中对控件的fra ...

  9. IOS开发学习笔记030-xib实现淘宝界面

    使用xib文件实现界面,然后通过模型更新数据. 1.使得控制器继承自UITableViewController 2.创建xib文件,实现界面如下:一个UIImageView,两个lable 3.新建一 ...

随机推荐

  1. Android——dpi相关知识总结

    1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸...... nexus4手机是4.7英寸 As ...

  2. python3基础09(装饰器的使用)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import time #方式1class People: def __init__(self, name, a ...

  3. 百倍性能的PL/SQL优化案例(r11笔记第13天)

    我相信你是被百倍性能的字样吸引了,不过我所想侧重的是优化的思路,这个比优化技巧更重要,而结果嘛,其实我不希望说成是百倍提升,“”自黑“”一下. 有一个真实想法和大家讨论一下,就是一个SQL语句如果原本 ...

  4. 部署JavaWeb时出现 If a file is locked,you can wait until

    在部署JavaWeb程序时出现了if a file is locked ,you can wait until the lock stop的问题,这个主要是classpath目录出错或者jar包未导入 ...

  5. ASP.net Session阻塞、Session锁、MVC Action请求阻塞问题

    会话Session Session用于服务器端状态管理,使用Session之后,每个客户端都可以将实际的数据保存在服务器上,对于每个客户端的数据,将会生成一个对应的唯一的key(保存在客户端).客户端 ...

  6. JS中的toString()和valueOf()方法

    1.toString()方法:主要用于Array.Boolean.Date.Error.Function.Number等对象转化为字符串形式.日期类的toString()方法返回一个可读的日期和字符串 ...

  7. tomcat服务器配置域名访问项目server.xml

    <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF ...

  8. 关于wp8.1 runtime模式下面的摄像头调用拍照问题和应用生命周期问题

    现在的msdn文档,还找不到详细的wp8.1的摄像头拍照文档,只有一个序列拍照,类似九连拍的文档,而且这文档感觉就是windows8.1搬过来应付的,wp8.1模式,只要有一个地方处理不好,手机就会死 ...

  9. js 实现纯前端将数据导出excel两种方式,亲测有效

    由于项目需要,需要在不调用后台接口的情况下,将json数据导出到excel表格,兼容chrome没问题,其他还没有测试过 通过将json遍历进行字符串拼接,将字符串输出到csv文件,输出的文件不会再是 ...

  10. 多线程:InterlockedIncrement

    1.InterlockedIncrement保护多线程中操作的整数. #include <stdio.h> #include <windows.h> volatile long ...