码迷,mamicode.com
首页 > 其他好文 > 详细

纯代码实现自定义UITableView的cell

时间:2016-05-06 16:18:30      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

纯代码实现自定义UITableView的cell


  1. 新建一个继承自UITableViewCell的类

  2. 重写initWithStyle:reuseIdentifier:方法,在里面实现:

    • 添加所有需要显示的子控件(不需要设置子控件的数据和frame,子控件要添加到contentView中)
    • 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片)

BNPSettingCell.h文件:

/*本代码实现自定义cell的分隔线*/
#import <UIKit/UIKit.h>

@interface BNPSettingCell : UITableViewCell

/****这个位置可以定义一些需要的属性,方便外界传值****/
//往外界提供一个类方法,以便获取自定义的cell
+ (instancetype)cellWithTableView:(UITableView *)tableView;

@end

BNPSettingCell.m文件:

#import "BNPSettingCell.h"

@interface BNPSettingCell ()
@property (nonatomic,strong)UIView *viewLine;
@end

@implementation BNPSettingCell

+ (instancetype)cellWithTableView:(UITableView *)tableView{

    static NSString *ID = @"setting";
    //先从缓存池中找可重用的cell
    BNPSettingCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    //没找到就创建
    if (cell == nil) {
        cell = [[BNPSettingCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    return cell;
}

//通过代码自定义cell需要重写以下方法,可以添加额外的控件.
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        self.viewLine = [[UIView alloc]init];

        self.viewLine.backgroundColor = [UIColor blackColor];
        self.viewLine.alpha = 0.2;

        [self.contentView addSubview:self.viewLine];

    }
    return self;
}

//当父容器的frame发生改变时,会调用该方法,常常用来设置子控件的fram值
-(void)layoutSubviews{

    //这里一定要先调用父类的方法,否则你会很痛苦T_T
    [super layoutSubviews];
    self.viewLine.frame = CGRectMake(0, self.height - 1, [UIScreen mainScreen].bounds.size.width, 1);
}

@end

纯代码实现自定义UITableView的cell

标签:

原文地址:http://blog.csdn.net/u010545519/article/details/51316398

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!