cellForRowAtIndexPath滞后问题

时间:2011-10-09 03:36:24

标签: iphone objective-c cocoa-touch ipad

在我的cellForRowAtIndexPath中,我用以下内容设置了我的一个UILabel的文本:

cell.detail.text = [[poll objectForKey:@"parent"] objectForKey:@"name"];

但是,当我向上和向下滚动单元格时,这会导致单元格滞后,这只是第一次。我第一次完成从顶部到底部的滚动(这是滞后部分)并尝试再次进行第二次(从上到下滚动)。这不会滞后。为什么是这样?这是我的完整代码:

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

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

    if (cell == nil) {
        NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"VSCustomCell" owner:self options:nil];
        cell = (VSCustomCell *)[nib objectAtIndex:0];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    }


    [cell.main setFont:[UIFont fontWithName:@"cafeta" size:14]];
    [cell.detail setFont:[UIFont fontWithName:@"Bebas" size:8.0]];
    [cell.detail setTextColor:[UIColor grayColor]];

    PFObject * poll;

    [cell.stats setHidden:NO];
    [cell.stats setEnabled:YES];
    [cell.stats addTarget:self action:@selector(stats:) forControlEvents:UIControlEventTouchUpInside];
    [cell.stats setTag:indexPath.row];

    poll = [self.spotsResults objectAtIndex:indexPath.row];
    if (poll){
        cell.main.text = [poll objectForKey:@"question"];
        cell.detail.text = [[poll objectForKey:@"parent"] objectForKey:@"name"];
    }      
    return cell;    
}

1 个答案:

答案 0 :(得分:0)

滚动变得越来越快意味着细胞会被重复使用。这是个好兆头。 所以问题出现在第一阶段,即创建单元格if(cell == nil){}。尝试再次为单元格创建xib(不要忘记在xib中为单元格添加重用标识符)。