iphone使用自定义单元格滚动tableview太慢了

时间:2010-11-29 17:15:14

标签: iphone cocoa-touch uitableview

在iphone上部署我的应用程序时遇到此问题,但在模拟器上未检测到。

这是cellforrow的代码...

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

    NSLog(@"beginning cellforRowAtIndexPath for section %d, and cell %d",[indexPath indexAtPosition:0],[indexPath indexAtPosition:1]);

    static NSString *MyIdentifier = @"MyIdentifier";
    NSString *fieldTitle;
    NSString*fieldDescription;
    [_stopWatch start];
    [PersonalSection GetField:&fieldTitle AndValue:&fieldDescription UsingIndexPath:indexPath AndPersonalInformation:_personalInfo];


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"ViewContent" owner:self options:nil];
        cell = tvCell;
        self.tvCell=nil;

        ((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;
        ((UILabel*) [cell.contentView viewWithTag:2]).layer.cornerRadius=11;
    }


    UILabel*mainLabel=(UILabel*) [cell.contentView viewWithTag:1];
    mainLabel.text=fieldTitle;
    //mainLabel.textColor = [UIColor colorWithRed:0.745 green:0.116 blue:0.176 alpha:1.0];

    UILabel*detailLabel=(UILabel*)[cell.contentView viewWithTag:2];
    detailLabel.text=fieldDescription;
    [_stopWatch stop];
    NSLog(@"---------End cellforRowAtIndexPath");

    return cell;
}

其余部分用于部分,就像返回3或5那样没有真正的瓶颈。 所以我想知道是什么让它减慢了这么多。 现在数据提取“[PersonalSection GetField:& fieldTitle ...”相当快,它在iphone上最大0.1 ms。问题出在其他地方,我猜测有一种优化这种代码的方法,我想知道自定义单元格影响它只是一个带有标签和文本字段链接到这个ViewController的单元格。 任何想法。

2 个答案:

答案 0 :(得分:4)

当您创建单元格时,您将标识符设置为@“cell”,但是当您将其出列时,您正在寻找@“MyIdentifier”。看起来你每次都在重新创建单元格。

答案 1 :(得分:4)

好的,主要的性能问题是围绕内容视图的子视图的角落。 使用QuartzCore:

#import <QuartzCore/QuartzCore.h>
((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;

我删除了这些并减小了控件的大小以适合分段表的单元格。现在他们看起来很圆,但文本字段和标签不是。 这显着地修复了我的滚动性能。 谢谢大家的帮助。