![](https://app.yinxiang.com/shard/s41/res/733f90f6-31ce-40f8-a011-cc03d73d76c8/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.26.52.png)
tableView dequeueReusableCellWith
如果用到SB中的Cell是两个参数的。
没有用到Storyboard中的Cell是一个参数。加上if(!cell)判断。
需求右边显示图片,左边显示文本。
纯代码创建,一个参数。
1、Cell删掉。
![](https://app.yinxiang.com/shard/s41/res/ae5bb8cf-ad9d-460f-b341-8121bb100f3b/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.37.40.png)
2、自己创建Cell类
继承UITableViewCell
3、
![](https://app.yinxiang.com/shard/s41/res/e364c97e-a11e-49d0-9afb-5ad6278e5af7/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.28.14.png)
借用原本的初始化方法,重写它
![](https://app.yinxiang.com/shard/s41/res/fe6bf630-f8f4-46ee-8d76-2d89ecda2b5f/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.29.27.png)
自定义Cell
初始化方法 重写。
写自己想添加的内容。
直接
init-with-frame敲出来 替换掉。
- (
instancetype
)initWithFrame:(NSRect)frame
{
self = [ super initWithFrame:frame];
if ( self ) {
<#statements#>
}
return self ;
{
self = [ super initWithFrame:frame];
if ( self ) {
<#statements#>
}
return self ;
}
- (
instancetype
)initWithStyle:(
UITableViewCellStyle
)style reuseIdentifier:(
NSString
*)reuseIdentifier
{
self = [ super initWithStyle :style reuseIdentifier :reuseIdentifier];
if ( self ) {
<#statements#>
}
return self ;
{
self = [ super initWithStyle :style reuseIdentifier :reuseIdentifier];
if ( self ) {
<#statements#>
}
return self ;
}
添加一个图片和Lable。
![](https://app.yinxiang.com/shard/s41/res/4f857700-2384-4e18-9875-0f11ec5c3a5e/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.31.25.png)
记得在TableViewController中设置行高,显示效果才好。
-(
CGFloat
)tableView:(
UITableView
*)tableView heightForRowAtIndexPath:(
NSIndexPath
*)indexPath{
return 200 ;
return 200 ;
}
iv在.h中声明成属性。
不能起名字叫imageView.
原Cell控件和自己控件对比。
![](https://app.yinxiang.com/shard/s41/res/444f65e6-2fa3-41a3-ae21-dd0101c82337/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.33.57.png)
xib和SB选择;
xib可以复用。SB不可。
![](https://app.yinxiang.com/shard/s41/res/f8982ecc-8dd1-426e-a424-bc73041207f4/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.38.43.png)
第二种:SB
标识“Cell”
Cell所属的类修改为:
![](https://app.yinxiang.com/shard/s41/res/87d577ce-f53f-4963-9fea-98daa477f136/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.40.05.png)
若要修改Cell中的内容,其中都是你自定义
的控件。将Cell的属性设置如下:
![](https://app.yinxiang.com/shard/s41/res/0f9b54d9-14d8-4481-8e7f-3f4792b5a628/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%885.20.28.png)
关联到MyTableViewCell.h中。
- (
UITableViewCell
*)tableView:(
UITableView
*)tableView cellForRowAtIndexPath:(
NSIndexPath
*)indexPath {
// 如果是纯代码创建 就是 dequeue 方法 一个参数 如果是 sb 创建 就是两个参数
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" forIndexPath :indexPath];
// cell.iv.image = [UIImage imageNamed:@""];
cell. myLabel . text = [ NSString stringWithFormat : @"%d" ,indexPath. row ];
return cell;
// 如果是纯代码创建 就是 dequeue 方法 一个参数 如果是 sb 创建 就是两个参数
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" forIndexPath :indexPath];
// cell.iv.image = [UIImage imageNamed:@""];
cell. myLabel . text = [ NSString stringWithFormat : @"%d" ,indexPath. row ];
return cell;
}
第三种:
XIB创建自定义Cell
ViewController中拖拽一个TableView
Delegate DataSource连线
两个方法实现。
创建自定义Cell类。勾选XIB
![](https://app.yinxiang.com/shard/s41/res/3c9cb8bc-b66a-43ec-a60b-f5dad1582c43/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.15.07.png)
![](https://app.yinxiang.com/shard/s41/res/c765e027-e8fb-475f-ac9a-30188a724b3a/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.15.16.png)
控制 行
![](https://app.yinxiang.com/shard/s41/res/268dbf1c-cca1-4f64-9043-b4533278333d/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.16.27.png)
- (
UITableViewCell
*)tableView:(
UITableView
*)tableView cellForRowAtIndexPath:(
NSIndexPath
*)indexPath{
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" ];
if (!cell) {
cell = [[[ NSBundle mainBundle ] loadNibNamed : @"MyTableViewCell" owner : self options : nil ] lastObject ];
}
return cell;
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" ];
if (!cell) {
cell = [[[ NSBundle mainBundle ] loadNibNamed : @"MyTableViewCell" owner : self options : nil ] lastObject ];
}
return cell;
}
1、在原来的TableViewController 中的那个系统Cell
2、删除
cellForRowAtIndexPath 重用ID@“Cell”
3、变成XIB的自定义Cell的ID。
4、在
cellForRowAtIndexPath方法中,判断和生成cell的类都改为XIB自定义Cell类的。
MyTableViewCell XIB 重用标识:
![](https://app.yinxiang.com/shard/s41/res/2d09f3d6-6a6b-4bf9-8387-312237e15c7e/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.17.21.png)
区别:
SB中拖动Cell多高,模拟器显示就是多高。
XIB拖动无法影响模拟器。
用方法 HeightForRow。
4作业:成绩单一个Cell显示四个文本。
![](https://app.yinxiang.com/shard/s41/res/7e1aec60-d03d-4282-8065-e261126bf51a/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.20.25.png)
![](https://app.yinxiang.com/shard/s41/res/95444aff-47f7-4de6-821c-143a89b35953/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-26%20%E4%B8%8A%E5%8D%8811.17.59.png)
默认展示 最左边的。拖动item的顺序就可以 改变。
![](https://app.yinxiang.com/shard/s41/res/733f90f6-31ce-40f8-a011-cc03d73d76c8/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.26.52.png)
tableView dequeueReusableCellWith
如果用到SB中的Cell是两个参数的。
没有用到Storyboard中的Cell是一个参数。加上if(!cell)判断。
需求右边显示图片,左边显示文本。
纯代码创建,一个参数。
1、Cell删掉。
![](https://app.yinxiang.com/shard/s41/res/ae5bb8cf-ad9d-460f-b341-8121bb100f3b/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.37.40.png)
2、自己创建Cell类
继承UITableViewCell
3、
![](https://app.yinxiang.com/shard/s41/res/e364c97e-a11e-49d0-9afb-5ad6278e5af7/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.28.14.png)
借用原本的初始化方法,重写它
![](https://app.yinxiang.com/shard/s41/res/fe6bf630-f8f4-46ee-8d76-2d89ecda2b5f/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.29.27.png)
自定义Cell
初始化方法 重写。
写自己想添加的内容。
直接
init-with-frame敲出来 替换掉。
- (
instancetype
)initWithFrame:(NSRect)frame
{
self = [ super initWithFrame:frame];
if ( self ) {
<#statements#>
}
return self ;
{
self = [ super initWithFrame:frame];
if ( self ) {
<#statements#>
}
return self ;
}
- (
instancetype
)initWithStyle:(
UITableViewCellStyle
)style reuseIdentifier:(
NSString
*)reuseIdentifier
{
self = [ super initWithStyle :style reuseIdentifier :reuseIdentifier];
if ( self ) {
<#statements#>
}
return self ;
{
self = [ super initWithStyle :style reuseIdentifier :reuseIdentifier];
if ( self ) {
<#statements#>
}
return self ;
}
添加一个图片和Lable。
![](https://app.yinxiang.com/shard/s41/res/4f857700-2384-4e18-9875-0f11ec5c3a5e/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.31.25.png)
记得在TableViewController中设置行高,显示效果才好。
-(
CGFloat
)tableView:(
UITableView
*)tableView heightForRowAtIndexPath:(
NSIndexPath
*)indexPath{
return 200 ;
return 200 ;
}
iv在.h中声明成属性。
不能起名字叫imageView.
原Cell控件和自己控件对比。
![](https://app.yinxiang.com/shard/s41/res/444f65e6-2fa3-41a3-ae21-dd0101c82337/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.33.57.png)
xib和SB选择;
xib可以复用。SB不可。
![](https://app.yinxiang.com/shard/s41/res/f8982ecc-8dd1-426e-a424-bc73041207f4/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.38.43.png)
第二种:SB
标识“Cell”
Cell所属的类修改为:
![](https://app.yinxiang.com/shard/s41/res/87d577ce-f53f-4963-9fea-98daa477f136/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%882.40.05.png)
若要修改Cell中的内容,其中都是你自定义
的控件。将Cell的属性设置如下:
![](https://app.yinxiang.com/shard/s41/res/0f9b54d9-14d8-4481-8e7f-3f4792b5a628/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%885.20.28.png)
关联到MyTableViewCell.h中。
- (
UITableViewCell
*)tableView:(
UITableView
*)tableView cellForRowAtIndexPath:(
NSIndexPath
*)indexPath {
// 如果是纯代码创建 就是 dequeue 方法 一个参数 如果是 sb 创建 就是两个参数
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" forIndexPath :indexPath];
// cell.iv.image = [UIImage imageNamed:@""];
cell. myLabel . text = [ NSString stringWithFormat : @"%d" ,indexPath. row ];
return cell;
// 如果是纯代码创建 就是 dequeue 方法 一个参数 如果是 sb 创建 就是两个参数
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" forIndexPath :indexPath];
// cell.iv.image = [UIImage imageNamed:@""];
cell. myLabel . text = [ NSString stringWithFormat : @"%d" ,indexPath. row ];
return cell;
}
第三种:
XIB创建自定义Cell
ViewController中拖拽一个TableView
Delegate DataSource连线
两个方法实现。
创建自定义Cell类。勾选XIB
![](https://app.yinxiang.com/shard/s41/res/3c9cb8bc-b66a-43ec-a60b-f5dad1582c43/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.15.07.png)
![](https://app.yinxiang.com/shard/s41/res/c765e027-e8fb-475f-ac9a-30188a724b3a/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.15.16.png)
控制 行
![](https://app.yinxiang.com/shard/s41/res/268dbf1c-cca1-4f64-9043-b4533278333d/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.16.27.png)
- (
UITableViewCell
*)tableView:(
UITableView
*)tableView cellForRowAtIndexPath:(
NSIndexPath
*)indexPath{
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" ];
if (!cell) {
cell = [[[ NSBundle mainBundle ] loadNibNamed : @"MyTableViewCell" owner : self options : nil ] lastObject ];
}
return cell;
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : @"Cell" ];
if (!cell) {
cell = [[[ NSBundle mainBundle ] loadNibNamed : @"MyTableViewCell" owner : self options : nil ] lastObject ];
}
return cell;
}
1、在原来的TableViewController 中的那个系统Cell
2、删除
cellForRowAtIndexPath 重用ID@“Cell”
3、变成XIB的自定义Cell的ID。
4、在
cellForRowAtIndexPath方法中,判断和生成cell的类都改为XIB自定义Cell类的。
MyTableViewCell XIB 重用标识:
![](https://app.yinxiang.com/shard/s41/res/2d09f3d6-6a6b-4bf9-8387-312237e15c7e/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.17.21.png)
区别:
SB中拖动Cell多高,模拟器显示就是多高。
XIB拖动无法影响模拟器。
用方法 HeightForRow。
4作业:成绩单一个Cell显示四个文本。
![](https://app.yinxiang.com/shard/s41/res/7e1aec60-d03d-4282-8065-e261126bf51a/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-17%20%E4%B8%8B%E5%8D%883.20.25.png)
![](https://app.yinxiang.com/shard/s41/res/95444aff-47f7-4de6-821c-143a89b35953/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202015-09-26%20%E4%B8%8A%E5%8D%8811.17.59.png)
默认展示 最左边的。拖动item的顺序就可以 改变。