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

时间:2009-12-22 05:17:42

标签: iphone

我使用

创建了一个单元格
static NSString *CellIdentifier = @"TweetListUserName";

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

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

- (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;

    }

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

3 个答案:

答案 0 :(得分:0)

嗨,我想你需要测试它是否已经设置好了。你现在拥有它的方式每次滚动时都会运行上面的代码,这意味着它会被设置很多。

答案 1 :(得分:0)

我遇到过类似的问题。

在我的情况下,原因是在自定义表格单元格内。 在我的自定义表格单元格中,我使用了UITextView对象,其scrollEnabled属性设置为 NO editable属性设置为 { {1}} 即可。

probelm链接到scrollEnabled = NO。使用scrollEnabled = YES我没有问题。

但是,由于NO没有编辑和滚动与UITextView差别不大,我将UILabel替换为UITextView设置UILabel 0.

不要问我为什么。这种方式很有效。 :)

答案 2 :(得分:0)

这是因为您正在更改layoutsubviews中标题的框架。如果删除它,它将被修复。