当我们重用单元标识符时,UItableview标头闪烁

cry*_*tal 5 iphone

我创建了一个单元格

static NSString *CellIdentifier = @"TweetListUserName";

CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
        cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease] ;
}
Run Code Online (Sandbox Code Playgroud)

并使用以下代码设置节标题:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

        UIView* customView = [[[UIView alloc] initWithFrame:CGRectMake(0.0, -4.0, 320.0, 67.0)]autorelease];
        [customView setOpaque:YES];
        UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(-2.0, -4.0, 328.0, 67.0)];
        [image setImage:[UIImage imageNamed:@"header-msg.png"]];
        [image setOpaque:YES];
        [customView addSubview:image];

        UILabel *label1 =[[UILabel alloc] initWithFrame:CGRectMake(10, 5, 100, 12)];
        label1.text =@"TWEETS MATCHING:"; 
        label1.textAlignment=UITextAlignmentLeft;
        [label1 setTextColor:[UIColor grayColor]];
        [label1 setFont:[UIFont fontWithName:@"Helvetica" size:9]];;
        [label1 setBackgroundColor:[UIColor clearColor]];
        [customView addSubview:label1];
        [label1 release];

        UILabel *label2 =[[UILabel alloc] initWithFrame:CGRectMake(10, 6, 315, 50)];
        label2.text =usernametag; 
        label2.textAlignment=UITextAlignmentLeft;
        [label2 setTextColor:[UIColor blackColor]];
        [label2 setFont:[UIFont fontWithName:@"Helvetica-Bold" size:20]];
        [label2 setBackgroundColor:[UIColor clearColor]];
        [customView addSubview:label2];
        [label2 release];


        return customView;

    }
Run Code Online (Sandbox Code Playgroud)

但是,当我快速滚动表格时,几乎所有情况下标题都会闪烁.如何防止这种闪烁?

Ric*_*kiG 0

您好,我认为您需要测试它是否已经设置。按照你现在的方式,每次滚动时它都会运行上面的代码,这意味着它将被设置很多。