UItableView reloadData未正确设置单元格显示属性

时间:2012-05-07 17:52:07

标签: ios uitableview reloaddata

我有一个表视图,我正在动态重新加载它的内容,以便重新加载表格内容我使用以下代码:

[agendaTable reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];

这很好用,但问题是我是按照以下方式设置表格单元格的alpha属性:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {


    if([cell isKindOfClass:[AgendaItemBlank class]])
        cell.backgroundColor = [UIColor clearColor];

    else if([cell isKindOfClass:[AgendaItem class]])
    {
        cell.backgroundColor = [UIColor whiteColor];

        [cell setAlpha:0.82];

        //set the corner radius so that there is a rounded effect
        [cell.layer setBorderWidth:0.5];
        [cell.layer setCornerRadius:9.0];
        [cell.layer setBorderColor:[UIColor redColor].CGColor];
        [cell.layer setMasksToBounds:YES];

        //set a different color for the selected background
        UIView *bgColorView = [[UIView alloc] init];
        [bgColorView setBackgroundColor:[UIColor redColor]];
        [bgColorView.layer setCornerRadius:9.0];
        [cell setSelectedBackgroundView:bgColorView];
        [bgColorView release];
    }
}

这些的组合导致这样的事实:在重新加载之后,表格单元格最初变为不透明,所有属性都生效但不是alpha属性。

当单元格向上和向下滚动时(特别是在重绘时),单元格会恢复其alpha属性。

我也尝试在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath内设置alpha,但这没有任何效果。

2 个答案:

答案 0 :(得分:0)

要设置单元格背景,请使用中间UIView对象:

UIView* cellBackView = [[UIView alloc] initWithFrame:CGRectZero];
cellBackView.backgroundColor = [UIColor redColor];
cellBackView.alpha = 0.82;
cell.backgroundView = cellBackView;

答案 1 :(得分:0)

[cell setBackgroundColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:0.82]];
[cell.textLabel setBackgroundColor:[UIColor clearColor]];