三种自定义UITableViewCell的方法

一、子类化带xib的UITableViewCell

//1.tableView注册
UINib *nib = [UINib nibWithNibName:@"CustomTableViewCell" bundle:nil];
[tableView registerNib:nib forCellReuseIdentifier:@"CustomTableViewCell"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //不带NSIndexPath*,完全复用    
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomTableViewCell"];
    //带NSIndexPath*,复用每一个NSIndexPath*的cell
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomTableViewCell" forIndexPath:indexPath];
}
//2.tableView没注册,xib中必须注明identifier一致,否则不会复用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellID = @"CustomTableViewCell";
    CustomCell * cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        //cell必须通过xib文件创建
        cell = [[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] lastObject];        
    }
    return cell;
}
@end

二、子类化不带xib的UITableViewCell

//1.tableView注册

[table registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //不带NSIndexPath*,完全复用    
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    //带NSIndexPath*,复用每一个NSIndexPath*的cell
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    return cell;
}
//2.tableView没注册
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellID = @"CustomTableViewCell";
    //创建cell,用不带NSIndexPath*参数的方法    
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        //用自定义初始化的方法创建
        cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }
    return cell;
}

你可能感兴趣的:(三种自定义UITableViewCell的方法)