1.自定义cell--纯代码
新建一个继承自UITableViewCell
的字类,比如AZTuanGouCell
@interface AZTuanGouCell : UITableViewCell
在AZTuanGouCell.m文件中
重写
initWithStyle:reuseIdentifier:
方法在这个方法中添加所有的子控件
给子控件做一些初始化设置(设置字体,颜色)
添加子控件的完整约束
约束所使用的框架
Masonry
框架
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
if(self=[super initWithStyle:style reuseIdentifier:reuseIdentifier])
{
CGFloat margin=10;
//图片
UIImageView *iconImageView=[[UIImageView alloc]init];
iconImageView.backgroundColor=[UIColor blackColor];
[self.contentView addSubview:iconImageView];
self.iconView=iconImageView;
//约束
[iconImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.equalTo(self.contentView).offset(margin);
make.bottom.equalTo(self.contentView).offset(-margin);
make.width.equalTo(80);
}];
}
return self;
}
在AZTuanGouCell.h文件中提供一个模型属性,比如AZTg模型
/*团购数据*/
@property(nonatomic,strong)AZTg *tg;
在AZTuanGouCell.m文件中重写模型的set方法
- 在set方法中给子控件设置模型数据
-(void)setTg:(AZTg *)tg
{
_tg=tg;
self.iconView.image=[UIImage imageNamed:tg.icon];
self.titleLabel.text=tg.title;
self.price.text=[NSString stringWithFormat:@"¥%@",tg.price];
self.buyCount.text=[NSString stringWithFormat:@"%@人已购买",tg.buyCount];
}
在控制器中
- 注册cell的类型
[self.tableView registerClass:[AZTuanGouCell class] forCellReuseIdentifier:ID];
- 创建cell,传递数据
#pragma mark-UITableView的数据源方法
//返回具体的cell
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//从缓存池中取出对应ID标识的cell,如果没有创建一个对应ID标识的cell
AZTuanGouCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
//设置数据(传递模型数据)
cell.tg=self.tgs[indexPath.row];
return cell;
}
2.自定义cell--storyboard实现
新建一个继承自UITableViewCell
的子类,比如AZTuanGouCell
@interface AZTuanGouCell : UITableViewCell@end
在storyboard文件中,找到UITableView里面的cell(动态cell)- 修改cell的class为AZTuanGouCell
- 绑定循环利用标识
- 添加子控件,设置子控件约束
- 将子控件连线到类扩展中
@interface AZTuanGouCell()
@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *priceLabel;
@property (weak, nonatomic) IBOutlet UILabel *buyCountLabel;@end
在AZTuanGouCell.h文件中提供一个模型属性,比如AZTg模型
@class AZTg;
@interface AZTgCell : UITableViewCell/** 团购模型数据 */
@property (nonatomic, strong) AZTg *tg;
@end
在AZTgCell.m中重写模型属性的set方法- 在set方法中给子控件设置模型数据
- (void)setTg:(AZTg *)tg
{
_tg = tg;
// .......
}
在控制器中- 给cell传递模型数据
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
static NSString *ID = @"tg";
// 访问缓存池
AZTuanGouCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
// 设置数据(传递模型数据)
cell.tg = self.tgs[indexPath.row];
return cell;
}