UItableView初始化时register注册cell

最近想弄个TabelView,然后发现传统的创建cell的方法除了问题:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid forIndexPath:indexPath];

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];}

在初始化tableview的时候我没有使用registerClass和registerNib注册cell,结果tableView没有复用,每条数据都会创建一个cell,没有达到复用的效果!因此:

若要使用UITableView的复用机制,就必须在初始化UITableView的时候就注册Cell或Header/Footer并制定其Identifier,注册的方式分两种:registerClass和registerNib,具体怎么用呢:

1.如果你的TableViewCell是只有代码没有xib:

[self.baseTableView registerClass:[UITableViewCell class]forCellReuseIdentifier:@"CellReuseIdentifier"];

2.如果TableViewCell是代码加xib的话有以下两种方式注册:

(1)除了上面那句代码,还需在Cell的.m文件中实现:initWithStyle并自己加载Nib:

(NSString*)reuseIdentifier {

self= [super initWithStyle:style reuseIdentifier:reuseIdentifier];

if(self) {

NSArray*nibArray = [[NSBundle mainBundle]loadNibNamed:@"HomeTableViewCell"owner:niloptions:nil];

self= [nibArray lastObject];

[self  initCell];

}

returnself;

}

(2).直接使用registerNib进行注册

[self.baseTableView registerNib:[UINib nibWithNibName:@"HomeTabelViewCell"bundle:nil] forCellReuseIdentifier:@"HomeTabelViewCell"];

你可能感兴趣的:(UItableView初始化时register注册cell)