美文网首页
iOS UITableViewCell 注册与重用

iOS UITableViewCell 注册与重用

作者: cocoaCoffee | 来源:发表于2022-08-11 22:51 被阅读0次

    1 创建UITableView设置相关属性时注册

    // xib cell注册
    [tableView registerNib:[UINib nibWithNibName:NSStringFromClass([UITableViewCell class]) bundle:nil] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
    
    // 纯代码 cell注册
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
    

    如果先注册了,那么tableView调用数据源方法tableView:cellForRowAtIndexPath:时就不用再注册,直接可以使用dequeueReusableCellWithIdentifier:forIndexPath:就会重用,其实我实验过用dequeueReusableCellWithIdentifier也是会重用的,但还是建议用前者,因为后者一般配合在tableView:cellForRowAtIndexPath:方法里面注册使用。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath];
        return cell;
    }
    

    2 在数据源方法里面注册(适用于未能提前知道Identifier,如从接口获取的Identifier)

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])];
        // xib的cell注册
        if(cell == nil)
        {
            cell = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([UITableViewCell class]) owner:self options:nil] firstObject];
        }
        // 纯代码的cell注册
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])];
        }
        return cell;
    }
    

    3 直接在xib cell里面注册

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath];
        NSLog(@"地址-----%p 第%ld行",cell, indexPath.row + 1);
        return cell;
    }
    

    相关文章

      网友评论

          本文标题:iOS UITableViewCell 注册与重用

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