iPhone UITableView与自定义单元格断断续续。如何让它顺利滚动?

时间:2010-03-26 21:12:27

标签: iphone interface uitableview builder

我正在使用UITableView显示使用Interface Builder创建的自定义单元格。表格滚动不是很平滑(它“断断续续”)让我相信细胞没有被重复使用。这段代码有问题吗?

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

static NSString *CellIdentifier = @"TwitterCell";
TwitterCell *cell = (TwitterCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil){
    //new cell
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"TwitterCell" 
                                                   owner:nil options:nil];

    for(id currentObject in topLevelObjects)
    {
        if([currentObject isKindOfClass:[TwitterCell class]])
        {
            cell = (TwitterCell *)currentObject;
            break;
        }
    }

}

if([self.tweets count] > 0) {
    cell.lblUser.text = [[self.tweets objectAtIndex:[indexPath row]] username];
    cell.lblTime.text = [[self.tweets objectAtIndex:[indexPath row]] time];
    [cell.txtText setText:[[self.tweets objectAtIndex:[indexPath row]] text]];
    [[cell imgImage] setImage:[[self.tweets objectAtIndex:[indexPath row]] image]];
} else {
    cell.txtText.text = @"Loading...";
}


cell.selectionStyle = UITableViewCellSelectionStyleNone;

return cell;
}

4 个答案:

答案 0 :(得分:6)

也许来自atebits(Tweetie的创作者)的博客文章可以帮助您:http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/

  

切入追逐,这是秘密:每个表格单元一个自定义视图,并自己绘制。听起来很简单?那是因为它是。它实际上比处理标签和图像的大量子视图更简单,并且它的速度提高了大约数十亿倍(根据我的非正式测试)。

答案 1 :(得分:2)

夫妻俩:

  1. 确保IB中的单元格标识符符合cellForRowAtIndexPath方法中您要查找的内容
  2. 不太可能成为罪魁祸首,但是要进行性能调整,请缓存你提取的“推文”,以避免从NSArray中获取(小)成本

答案 2 :(得分:0)

通过不加载笔尖并在代码中完全创建自定义单元格,您可能会发现很多加速。

否则你需要做一些分析来找出隐藏的减速潜伏的地方。

答案 3 :(得分:0)

如果你正在使用一个nib文件来加载表格视图单元格,那么显然它需要一段时间才能加载并产生一种生涩的感觉。

所以最好的方法是使用代码设计视图并覆盖方法

drawInRect

如果是UITableView,这将为您的应用程序提供非常流畅的滚动。