滚动tableview时禁用UITableViewCell背景颜色

时间:2012-10-30 13:46:53

标签: ios uitableview uibackgroundcolor

在我的应用程序中,我有一个tableView,我在选中时更改了单元格的背景颜色,我将该代码编写为

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor whiteColor];
}

问题是当我滚动tableView时,单元格的背景颜色被禁用,白色不可见意味着删除了背景颜色效果。滚动时,表视图重用了单元格,因此删除了单元格背景效果。我知道我在哪里遇到问题,但我不知道如何处理这个问题,并保持所选单元格的背景颜色为白色,即使表格视图滚动。请告诉我这个问题的解决方案。

2 个答案:

答案 0 :(得分:0)

更改所选行背景的最佳方法是在创建单元格时更改selectedBackgorundView。这样,您就不需要处理didSelectRowAtIndexPath:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"myCellId";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        UIView *v = [[UIView alloc] init];
        v.backgroundColor = [UIColor whiteColor];
        cell.selectedBackgroundView = v; // Set a white selected background view. 
    }
    // Set up the cell...
    cell.textLabel.text = @"foo";
    return cell;
}

答案 1 :(得分:0)

这不起作用,因为单元格可以重复使用。所以你的backgroundColor可能会很快被覆盖,因为单元格会被重用。

您应该使用单元格backgroundView。正如Pulkit所写的那样。