AZ_自定义cell

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

AZ_自定义cell_第1张图片

  • 绑定循环利用标识

AZ_自定义cell_第2张图片

  • 添加子控件,设置子控件约束

AZ_自定义cell_第3张图片

  • 将子控件连线到类扩展中

@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;

}

AZ_自定义cell_第4张图片

转载于:https://www.cnblogs.com/azhang-coder/p/6099116.html

你可能感兴趣的:(AZ_自定义cell)