我应该如何将子视图添加到cell.contentView? [英] How should I addSubview to cell.contentView?

查看:123
本文介绍了我应该如何将子视图添加到cell.contentView?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

A(当新创建单元格时):

A (when the cell is newly created):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        CGRect frame = CGRectMake(0, 0, 160, 50);
        UILabel *label = [[UILabel alloc] initWithFrame:frame];
        label.textAlignment = UITextAlignmentRight;
        label.text = @"9:00am";
        [cell.contentView addSubview:label];
        [label release];
    }

    return cell;
}

或B(每次找到单元格时):

or B (every time when the cell is found):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];    
    }

    CGRect frame = CGRectMake(0, 0, 160, 50);
    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    label.textAlignment = UITextAlignmentRight;
    label.text = @"9:00am";
    [cell.contentView addSubview:label];
    [label release];

    return cell;
}

A或B?谢谢!

更新解决方案(感谢答案):

UPDATE Solution (thanks for the answers):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

    static NSString *CellIdentifier = @"Cell";    
    UILabel *label;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        CGRect frame = CGRectMake(0, 0, 160, 50);
        label = [[UILabel alloc] initWithFrame:frame];
        label.textAlignment = UITextAlignmentRight;
        label.tag = 1;
        [cell.contentView addSubview:label];
        [label release];
    } else {
        label = (UILabel *) [cell viewWithTag:1];
    }

    label.text = [NSString stringWithFormat:@"%d", [indexPath row]];

    return cell;
}


推荐答案

这都是关于性能的。使用A,您可以重复使用包含其所有子视图的单元格,使用B,您只重用原始单元格并在每次迭代时添加新的子视图,恕我直言不如A re:performance。

It's all about performance. With A, you reuse the cell with all of its subviews, with B, you reuse only the raw cell and add a new subview every iteration, which IMHO is not as good as A re: performance.

我说创建 UITableView 子类或使用解决方案A.

I say either create a UITableView subclass or use solution A.

这篇关于我应该如何将子视图添加到cell.contentView?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆