美文网首页问题记录
iOS笔记-自定义cell的重用

iOS笔记-自定义cell的重用

作者: keelZJP | 来源:发表于2017-03-07 15:08 被阅读1150次

    一、使用xib

    <1>不需要注册

    直接在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;方法中写就好了

    static NSString *identifer=@"****TableViewCell";

    ****TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer];

    if (cell == nil) {

            cell = [[[NSBundle mainBundle] loadNibNamed:@"****TableViewCell" owner:self options:nil] lastObject];

     }

    <2>需要注册

    1、在- (void)viewDidLoad;方法中注册:

    [_tableView registerNib:[UINib nibWithNibName:@"****TableViewCell" bundle:nil] forCellReuseIdentifier:@"****TableViewCell"];

    2、在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;方法中写:

    static NSString *identifer=@"****TableViewCell";

    HomeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer forIndexPath:indexPath];

    二、纯代码

    1>、重写自定义cell的initWithStyle:withReuseableCellIdentifier:方法进行布局

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    {

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

    if (self)

    {

    // cell页面布局

    [self setupView];

    }

    return self;

    }

    2>、

    1、需要注册

    为tableView注册cell,使用registerClass:forCellReuseIdentifier:方法注册

    [_tableView registerClass:[****TableViewCell class] forCellReuseIdentifier:@"****TableViewCell"];

    在cellForRowAtIndexPath中使用dequeueReuseableCellWithIdentifier:forIndexPath:获取重用的cell,若无重用的cell,将自动使用所提供的class类创建cell并返回

    ****TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer forIndexPath:indexPath];

    2、不需要注册

    static NSString *identifer=@"****TableViewCell";

    ****TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifer];

    if (cell == nil) {

    cell = [[****TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifer];

    }

    注:使用dequeueReuseableCellWithIdentifier:可不注册,但是必须对获取回来的cell进行判断是否为空,若空则手动创建新的cell;

    使用dequeueReuseableCellWithIdentifier:forIndexPath:必须注册,但返回的cell可省略空值判断的步骤。

    相关文章

      网友评论

        本文标题:iOS笔记-自定义cell的重用

        本文链接:https://www.haomeiwen.com/subject/alhkgttx.html