新建继承自uitableviewcell的子类
xib自定义样式并指定其重用标示
配置cell数据
#import <UIKit/UIKit.h> @interface CellStyleTwo : UITableViewCell //工号 @PRoperty (weak, nonatomic) IBOutlet UILabel *userCode; //电话 @property (weak, nonatomic) IBOutlet UILabel *phoneNumber; /** * 配置 cell数据 */ -(void)configureCellStyleTwo:(id)data; @end
/** * 配置 cell数据 * * @param data */ -(void)configureCellStyleTwo:(id)data { //如果数据是字典 NSDictionary* dictionary=(NSDictionary*)data; if (dictionary) { self.userCode.text=dictionary[@"usercode"]; self.phoneNumber.text=dictionary[@"userTel"]; } }
对于是不是需要重写初始化,得看使用方法,如果是这样使用的话就不需要
[self.tableView registerNib:[UINib nibWithNibName:@"CellStyleTwo" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"CellStyleTwo"];
因为这种方式系统是直接查找得指定资源,不会使用默认创建方式
下面就需要
[self.tableView registerClass:[CellStyleTwo class] forCellReuseIdentifier:@"CellStyleTwo"];
-(nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier { self=[super initWithStyle:style reuseIdentifier:reuseIdentifier]; return [[[NSBundle mainBundle] loadNibNamed:@"CellStyleTwo" owner:self options:nil] firstObject]; }
这种方式仅仅是指定了注册的类,系统会使用默认的方式创建,但并不是我们所期望的,所以需要重写起初始化。
但是cell的重用是一样的
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell* uiTableViewCell= [tableView dequeueReusableCellWithIdentifier:self.nsStringIdentifier forIndexPath:indexPath]; self.blockConfigureCell(uiTableViewCell,self.nsArrayModels[indexPath.row]); tableView.tableFooterView=[[UIView alloc] initWithFrame:CGRectZero]; return uiTableViewCell; }