如何加快表行滚动?

时间:2011-01-23 17:38:41

标签: iphone objective-c ipad uitableview

我有一个由这些元素组成的表格行:

alt text

1 - 图像视图(日历)
4 - uilabel(月,日,标题,描述)

on cellForRowAtIndexPath我以这种方式填充标签(图像相同并由界面构建器插入):

@try {
    newsRow = ((NewsRowController *)[tableView dequeueReusableCellWithIdentifier:@"cell"]);
    if (newsRow == nil) {
        if (IS_IPAD)
            [[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil];
        else [[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil];

        if ([tableArray count] > 0) {
            [newsRow setCellDataWithName:[tableArray objectAtIndex:indexPath.row]  
                                 andDate:[descArray objectAtIndex:indexPath.row] 
                                     day:[dayArray objectAtIndex:indexPath.row]
                                   month:[monthArray objectAtIndex:indexPath.row]];
        }
    }       
}
@catch (NSException * e) {
    NSLog(@"fail.");
}
return newsRow;

现在,tableArraydescArraydayArraymonthArrayviewDidLoad上填充的NSMutableArray。

为什么在iPhone设备上(我的测试是使用3G)太慢而无法向上/向下滚动?
我需要删除什么来加快表格?
这是我的所有代码,但我无法找到更好的解决方案......

修改
alt text
我无法设置标识符...我看不到它...
我的新闻行控制器是:

@interface NewsRowController : UITableViewCell

来自iphonist世界的任何想法??? :)

感谢,

1 个答案:

答案 0 :(得分:5)

是nib文件中tableviewcell的reuseidentifier正确吗? (您可以在属性检查器中找到它)

我对此表示怀疑,因为如果它是“细胞”,你会问为什么你的细胞不会更新。


编辑:如果标识符完全与代码中的标识符相同,请再次在界面构建器中检查。 Interface Builder Table View Cell Identifier

然后像这样更改你的代码:

if (newsRow == nil) {
    if (IS_IPAD)
        [[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil];
    else 
        [[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil];
}
else {
    NSLog(@"Dequeue success");
}
// no matter if there was a successful dequeue or not, you have a valid cell at this point
if ([tableArray count] > 0) {
    [newsRow setCellDataWithName:[tableArray objectAtIndex:indexPath.row]  
                         andDate:[descArray objectAtIndex:indexPath.row] 
                             day:[dayArray objectAtIndex:indexPath.row]
                           month:[monthArray objectAtIndex:indexPath.row]];
}

看看你是否能看到Dequeue成功logmessage


EDIT2

你确定你已经为你的笔尖添加了一个表视图单元而不是一个UIView吗? 我从来没有尝试,但对我来说,听起来你可以在一个笔尖中有一个UIView,它被“提升”到一个TableViewCell,它被添加到一个tableview中。

我检查这个的最佳尝试是单元格的图标 它应该如下所示: cell icon