iOS常用控件-UITableViewCell
一、 封装cell:
1、加载xib文件的两种方式
<方式1> (NewsCell是xib文件的名称)
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"NewsCell" owner:nil options:nil];
<方式2>
UINib *nib = [UINib nibWithNibNamed:@"NewsCell" bundle:nil];
NSArry *objects = [nib instantiateWithOwner:nil options:nil];
二、设置cell的高度
1. 如果每一行的cell高度都是一样,应该用代理方法设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 如果每一行的高度一样的话,可以在viewDidLoad中设置: self.tableView.rowHeight = 80;
// 返回indexPath这行对应的cell的高度
return 80;
}
====================================================================
三、自定义cell两种方式: 方式一、通过xib描述cell:
> 一定要注意在xib的cell中设置重用标识 (reuse identifier) > 封装的步骤
新建xib描述cell的样子——DealCell.xib
新建 UITableViewCell 的子类 (定义一个类DealCell ,继承自UITableViewCell )——DealCell (封装xib内部的所有东西)
修改 xib 中 cell 的类名 (class) 为 DealCell。
在 DealCell 中拥有xib中的所有的子控件 (声明属性、进行连线) 。
新建模型Deal (定义一个类 Deal ,继承自NSObject ),封装数据。
给DealCell增加模型属性 (到时候才能从Deal中把从服务器上拿过来的数据拿到xib的控件中来显示)
在DealCell中:
@class Deal;
@interface DealCell:UITableViewCell
@property (nonatomic, weak) IBOutlet UIImageView *iconView;
@property (nonatomic, weak) IBOutlet UIImageView *dealNewView;
@property (nonatomic, weak) IBOutlet UILabel *titleLabel;
@property (nonatomic, weak) IBOutlet UILabel *buyLabel;
@property (nonatomic, weak) IBOutlet UILabel *priceLabel;
@property (nonatomic, strong) Deal *deal;
+ (id)dealCell;
+ (NSString *) ID;
#end
在DealCell中重写setDeal方法(在这个方法中根据模型数据设置cell内部子控件的属性):
#import “DealCell.h”
#import “Deal.h”
@implementation DealCell
- (void)setDeal:(Deal *)deal
{
_deal = deal;
// 1. 标题
_titleLabel.text = deal.title; // 2. 购买人数
_buyLabel.text = [NSString stringWithFormat:@“购买:%d”, deal.buy ]; // 3. 价格
_priceLabel.text = [NSString stringWithFormat:@“价格:%f”, deal.price ]; // 4. 头像
_iconView.image = [UIImage imageNamed:deal.icon]; // 5. 是否显示最新
_newView.hidden = ! deal.isNew;
}
+ ()dealCell
{
return [[NSBundle mainBundle] loadNibNamed:@“DealCell” owner:nil options:nil ] [];
}
+ (NSString *) ID
{
return @“deal”;
}
@end
提供一个类方法,返回从xib中创建好的cell对象。
给xib中的cell添加一个重用标识 (比如deal),再提供一个类方法返回一个重用标识。
提供一个类方法,返回cell的高度。 > 使用cell
设置每一行cell的高度
利用重用标识去缓存池中取得cell
如果缓存池中没有cell,创建cell
传递模型给cell (这一步是在- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个方法中做的) 方式二、通过代码自定义cell:
> 新建一个UITableViewCell的子类——weiboCell。
> 在创建cell的时候 (initWithStyle:reuseIdentifier:方法中) 添加cell内部需要使用的子控件。
> 新建一个模型类—— Weibo,增加对应的数据属性。
> 给WeiboCell增加一个Weibo模型属性, 在拿到Weibo模型数据的同时设置子控件的属性。
> 重写setWeibo:方法,在这里面取出Weibo模型的数据显示到子控件上。
在Deal中:
@interface Deal:NSObject
@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, assign) int buy;
@property (nonatomic, assign) double price;
@property (nonatomic, assign) BOOL isNew;
#end
iOS常用控件-UITableViewCell的更多相关文章
- Xamarin Studio在Mac环境下的配置和Xamarin.iOS常用控件的示例
看过好多帖子都是Win环境装XS,Mac只是个模拟器,讲解在Mac环境下如何配置Xamarin Studio很少,也是一点点找资料,东拼西凑才把Xamarin Studio装在Mac上跑起来,如下: ...
- [ios2] iOS常用控件尺寸大集合 【转】
元素控件 尺寸(PTS) Window(含状态栏) 320 x 480 Status Bar的高度 20 Navigation Bar的高度 44 含Prompt的Navigation Bar的高度 ...
- iOS常用控件尺寸大集合
元素控件 尺寸(pts) Window(含状态栏) 320 x 480 Status Bar的高度 20 Navigation Bar的高度 44 含Prompt的Navigation Bar的高度 ...
- iOS常用控件-UIScrollView
一. 常见属性 @property (nonatomic) CGPoint contentOffset; //记录UIScrollView滚动的位置 @pro ...
- 【Demo 0006】iOS常用控件
本章学习要点 1. 了解iOS中控件继承关系: 2. 掌握UIControl基础知识; 3. 掌握UIButton基本用法: 4. 掌握UILa ...
- iOS 常用控件集合 完整项目
[Swift]高仿 爱范儿3.0 http://www.code4app.com/forum.php?mod=viewthread&tid=10053&page=1&extra ...
- iOS 常用控件 参数
1.StatusBar 20px 2.TableViewCell 44px 3.TabBar 49px 4.NavigationBar 44px 5.NaviBarIcon 20*20px 6.Tab ...
- iOS开发-UI (一)常用控件
从这里开始是UI篇 知识点: 1.常用IOS基本控件 2.UITouch ======================= 常用基本控件 1.UISegmentedControl:分段控制器 1)创建方 ...
- iOS常见控件的基本使用
UI相关类继承关系 UIView 常见属性和方法 UIView属性 UIView方法 UIControl 常用控件 UIImageView 图片显示控件android ImageView UISlid ...
随机推荐
- mysql-数据库模式定义语言(DDL)
库的管理 /* 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建: create 修改: alter 删除: drop */ #一.库的管理 #.库的创建 /* 语法: creat ...
- hdu 4123 树形DP+单调队列
http://acm.hust.edu.cn/vjudge/problem/25790 这题基本同poj 3162 要注意mx,mx2,vx,vx2每次都要初始化 #include <iostr ...
- 浏览器缓存介绍之sessionStorage、localStorage、Cookie
Cookie Cookie 是小甜饼的意思.顾名思义,cookie 确实非常小,它的大小限制为4KB左右,是网景公司的前雇员 Lou Montulli 在1993年3月的发明.它的主要用途有保存登录信 ...
- css3之移动平台资源
随着移动端越来越普及,前端技术也是百花齐放,但目前移动平台的技术已经趋向于成熟,记得刚实习的时候就是接触的移动端,但现在2年多来,期间遇到了很多莫名其妙的问题,见证了手机用户量的突飞猛进,兴喜的是更多 ...
- Wallet address
BCX XZVYYwXFAJwv6x4KTssQxJb4EReVdCBnpb BCD 1DNSFUD7LURZdmbckkQcxMvinNJ26mVcNH
- 栅格那点儿事(四D)
统计值与空值 在上一篇的内容里反复提到了一个统计值.那这个统计值是怎么来的,具体是干嘛用的呢? 统计值主要就是用于栅格数据的显示和重分类,顾名思义就是一个波段中所有像元值的一个统计信息,最大值,最小值 ...
- Unable to copy a file from obj\Debug to bin\Debug
1. Exit the VS2012, and then re-open the solution. 2. Clean the solution and build.
- 【起航计划 027】2015 起航计划 Android APIDemo的魔鬼步伐 26 App->Preferences->Preferences from XML 偏好设置界面
我们在前面的例子Android ApiDemo示例解析(9):App->Activity->Persistent State 介绍了可以使用Shared Preferences来存储一些状 ...
- lucene的使用与优化
1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工 ...
- meta详解(常用)
1.<meta http-equiv="X-UA-Compatible" content="IE=edge"> 说明:设置浏览器的兼容模式版本.表示 ...