0

当我向上和向下滚动它多次时,我遇到了 uitableview 的问题,它变得粘滞并且所有包含的视图也变得粘滞。

这是我的代码:

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

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                      reuseIdentifier:CellIdentifier] ;
    }

    cell.textLabel.text=[NSString stringWithFormat:@"         %@",
                            [SongsNames objectAtIndex:indexPath.row]];

    UIImageView *b=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 35, 34)];
    b.image=[UIImage imageNamed:@"playbuttone.png"];
    [cell.contentView addSubview:b];
    [b release];
    UIButton *b2=[[UIButton alloc] initWithFrame:CGRectMake(260, 0, 50, 35)];
    [b2 setImage:[UIImage imageNamed:@"buye.png"] forState:UIControlStateNormal];
    [cell.contentView addSubview:b2];
    [b2 release];

    cell.textLabel.textColor=[UIColor colorWithWhite:1 alpha:1];
}

更新后:

cell.textLabel.text=[NSString stringWithFormat:@"         %@",[SongsNames objectAtIndex:indexPath.row]];

        [cell.contentView addSubview:b];
       // [b release];
        [cell.contentView addSubview:b2];
        //[b2 release];

        cell.textLabel.textColor=[UIColor colorWithWhite:1 alpha:1];

并在 viewdidload 中:

- (void)viewDidLoad{

b=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 35, 34)];
b.image=[UIImage imageNamed:@"playbuttone.png"];

b2=[[UIButton alloc] initWithFrame:CGRectMake(260, 0, 50, 35)];
[b2 setImage:[UIImage imageNamed:@"buye.png"] forState:UIControlStateNormal];

}

4

2 回答 2

1

您正在为该函数的每次调用重新加载图像。滚动时,此函数实际上会被调用很多次,这并不是必需的,特别是因为您的图像是静态的并且对于每个单元格都是相同的。

当视图加载时加载两个图像,在视图控制器中保存一个引用并重用它们。当表格视图请求单元格时。这很可能会解决您的问题。

于 2012-09-10T13:44:04.637 回答
0

好的,对于任何会遇到令人困惑的问题的人来说,停止将 uicontrols 添加到 uitableviewcell 并使用本教程中的自定义单元格

http://www.youtube.com/watch?v=PwcBdCUZNWs

于 2012-09-12T12:00:01.320 回答