1、自定义注册cell的方式:
1)独立使用xib创建的cell:
[self.tableView registerNib:
[UINib nibWithNibName:@"GPMeMailTableViewCell" bundle:
[NSBundle mainBundle]] forCellReuseIdentifier:CellReuseIdentifier];
2)在tableView中定义的cell,用类绑定cell:
[self.tableView registerClass:
[ableViewCell class] forCellReuseIdentifier:@“actionCell"];
注册cell后的使用:
直接调用这个dequeueReusableCellWithIdentifier就好了,如下:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@“cell"];
3)不注册:(使用NSBundle)
最好的方法是在这个cell的类中定义一个方法,如下:
+(instancetype)actionCellWithTableView:(UITableView *)tableView{
IMUActionsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:actionCell];
if (!cell) {
cell = [[[NSBundle mainBundle]loadNibNamed:@"IMUActionsTableViewCell" owner:nil options:nil] firstObject];
NSLog(@"创建了一个cell");
}
return cell;
}
2、步骤:
1、创建一个tableViewCell的类+xib
2、设计好cell的内容,如下图:
3、编写代码
//1、头文件
#import “GDataModel.h"
@interface GActionsTableViewCell : UITableViewCell
//cell的数据
@property(nonatomic,strong) GDataModel *data;
//类方法创建cell实例
+(instancetype)allActionCellWithTableView:(UITableView *)tableView;
@end
//2、.m文件
#import "GActionsTableViewCell.h"
#import <SDWebImage/UIImageView+WebCache.h>
#define GCell @“GCell"
@interface GActionsTableViewCell()
//文本
@property (weak, nonatomic) IBOutlet UILabel *TitleLabel;
//按钮
@property (weak, nonatomic) IBOutlet UIButton *JionBtn;
//图片
@property (weak, nonatomic) IBOutlet UIImageView *Image;
@end
@implementation GActionsTableViewCell
- (void)awakeFromNib {
// self.actionTitleLabel.text = self.actionData.actionTitle;
}
//setter方法时,完成对控件的赋值
-(void)setdata:(IMUActionDataModel *)data{
_data = data;
self.TitleLabel.text = _data.Name;
NSString *statusStr = nil;
if (_data.registration) {
statusStr = @"已报名";
self.JionBtn.enabled = NO;
self.JionBtn.backgroundColor = [UIColor lightGrayColor];
}else{
statusStr = @"报名";
}
[self.JionBtn setTitle:statusStr forState:UIControlStateNormal];
[self.Image sd_setImageWithURL:[NSURL URLWithString:_data.ImageUrl] placeholderImage:nil];
}
//根据tableView创建cell实例
+(instancetype)allActionCellWithTableView:(UITableView *)tableView{
GActionsTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:GCell];
if (!cell) {
cell = [[[NSBundle mainBundle]loadNibNamed:@"GActionsTableViewCell" owner:nil options:nil] firstObject];
NSLog(@"创建了一个cell");
}
cell.JionBtn.layer.cornerRadius = 3;
return cell;
}
//实现按钮事件
- (IBAction)jionUsBtnClicked:(UIButton *)sender {
UIButton *bt = sender;
NSString *str = bt.titleLabel.text;
NSLog(@"str : %@",str);
}
@end
3、使用
GActionsTableViewCell *cell = [IMUAllActionsTableViewCell allActionCellWithTableView:tableView];
GDataModel *data = self.Arrays[indexPath.row];
cell.actionData = data;
return cell;