加载xib文件的两种方式
一、加载xib文件的两种方式
1.方法一(NewsCell是xib文件的名称)
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil];
2.方法二
UINib *nib = [UINib nibWithNibName:@"NewsCell" bundle:nil];
NSArray *objects = [nib instantiateWithOwner:nil options:nil];
二、设置cell的高度
1.如果每一行cell的高度都是一样的,直接使用tableView的rowHeight属性设置cell的高度即可
tableView.rowHeight = 80;
2.如果每一行cell的高度不一定一样,应该用代理方法设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 返回indexPath这行对应cell的高度
return 80;
}
三、UITableViewController
1.UITableViewController内部默认会创建一个UITableView *tableView
2.UITableViewController内部tableView的delegate(代理)和dataSource(数据源)就是这个UITableViewController
3.UITableViewController内部tableView就是控制器的view
四、自定义cell
1.通过xib
1> 一定要注意在xib的cell中设置重用标识(reuse identifier)
2> 封装的步骤
* 新建xib描述cell的样子---DealCell.xib
* 新建UITableViewCell的子类---DealCell(封装xib内部的所有东西)
* 修改xib中cell的类名(class)为DealCell
* 在DealCell中拥有xib中的所有子控件(声明属性、进行连线)
* 新建模型Deal,封装数据
* 给DealCell增加模型属性
@property (nonatomic, strong) Deal *deal;
* 重写setDeal:方法,在这个方法中根据模型数据设置cell内部子控件的属性
* 提供一个类方法,返回从xib中创建好的cell对象
* 给xib中的cell添加一个重用标识(比如deal),提供一个类方法,返回重用标识
* 提供一个类方法,返回cell的高度
3> 使用cell
* 设置每一行cell的高度
* 利用重用标识去缓存池取得cell
* 如果缓存池没有cell,创建cell
* 传递模型给cell
2.通过代码
1> 新建一个UITableViewCell的子类---WeiboCell
2> 在创建cell的时候(initWithStyle:reuseIdentifier:方法中)添加cell内部需要使用的子控件
(注意:只管创建添加子控件,先不要去管子控件的位置和尺寸)
3> 新建一个模型类---Weibo,增加对应的数据属性
4> 给WeiboCell增加一个Weibo模型属性,在拿到Weibo模型数据的同时设置子控件的属性
5> 重写setWeibo:方法,在这里面取出Weibo模型的数据显示到子控件上
加载xib文件的两种方式的更多相关文章
- Spring加载properties文件的两种方式
在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...
- windows/tomcat 修改java虚拟机JVM以utf-8字符集加载class文件的两种方式
1.情景展示 做了这么长时间的java开发,但是,你知道JVM是以怎样的编码加载.解析class文件的吗? 我们知道,通常情况下,我们会将java文件的字符集修改成utf-8,这样,理所当然地就认 ...
- 转 Velocity中加载vm文件的三种方式
Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式: 方式一:加载classpath目录下的vm文件 Prope ...
- Velocity中加载vm文件的三种方式
Velocity中加载vm文件的三种方式: a. 加载classpath目录下的vm文件 /** * 初始化Velocity引擎 * --VelocityEngine是单例模式,线程安全 * @th ...
- Java加载资源文件的两种方法
处理配置文件对于Java程序员来说再常见不过了,不管是Servlet,Spring,抑或是Structs,都需要与配置文件打交道.Java将配置文件当作一种资源(resource)来处理,并且提供了两 ...
- xml文件 加载properties文件的两种方法与注意事项
1.遇到的问题: 配置redisSpringContext.xml 时,遇到 properties加载失败,提示BeanDefinitionStoreException 和 java.lang. ...
- UIImage加载本地图片的两种方式
UIImage加载图片方式一般有两种: (1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片 ...
- 动态加载script文件的两种方法
第一种就是利用ajax方式,把script文件代码从后台加载到前台,然后对加载到的内容通过eval()执行代码.第二种是,动态创建一个script标签,设置其src属性,通过把script标签插入到页 ...
- QML工程加载main.qml的两种方式
1. QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); if (e ...
随机推荐
- 使用jQuery和css3实现了仿淘宝ued博客左边的菜单切换动画
今天看到淘宝ued博客的左侧导航菜单的动画好,要使用jQuery和css3我做一个简单的示例,主要用途是实现jQuery 事件和css3 transition属性. 个元素来实现鼠标滑动到某个导航的背 ...
- windows和ubuntu 10.4双启动顺序
改动/boot/grub/grub.cfg文件 /boot/grub/grub.cfg文件,这与旧版本号不同(9.10之前版本号/boot/grub/menu.lst),并且为了安全起见,该文件默觉得 ...
- C#中的动态特性
众所周知,C#和Java一样,都是一门静态语言.在C# 4.0之前,想要和动态语言(诸如Python.Javascript等)进行方便地互操作是一件不太容易的事情.而C# 4.0为我们带来的dynam ...
- IE不能上网、有道云笔记不能联网、各种软件主页不能联网解决办法一
其他的办法我几乎都试过了,读者可以无搜一下,我的问题是,我用Lantern.exe,所以只要打开这个就可以了! 我一直不知道是这个问题,困扰了好久QAQ
- ios 类似的效果淘宝商品详细页面
今天试着写ios 分类似影响淘宝的商品详细页面 我使用第三方库EGORefreshTableHeaderView有一个下拉效果刷新PWLoadMoreTableFooterView上拉电阻负载许多其他 ...
- OpenGL 实现Interpolation插值算法
这是一个静态插值算法的效果,图形学中插值算法应用十分广.如动画.photoshop, autocAD等软件画曲线,还有shader中的渐变上色也是一个硬件支持的插值算法. Interpolation是 ...
- REST WebService
REST WebService 前置技能 ① 使用maven来管理java项目 这个技能必须点一级,以便快速配置项目. 本文实际上是我学习Spring的过程中搬的官网上的demo,使用maven配置项 ...
- Android发展Singleton模式
这是什么Singleton模式?它是Java23之间的一种模式,在Android发展也有着广泛的应用,例Calander类别,当对象是由未创建 new Calander而是Calander.getIn ...
- tc-SRM-626-DIV1-250
枚举alice投掷骰子得到的结果的每一种情况极其数量. 枚举bob投掷骰子得到的结果的每一种情况极其数量. 然后枚举alice投掷骰子得到的结果的数量和bob投掷骰子比alice低的数量. 然后计算结 ...
- Install Typical IIS Workloads
原文 Install Typical IIS Workloads Introduction The IIS 7.0 and above modular architecture is designed ...