-1

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

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

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

4

2 回答 2

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;
}
于 2012-10-30T13:51:58.680 回答
0

这是行不通的,因为单元格会被重复使用。因此,当单元格被重用时,您的 backgroundColor 可能会立即被覆盖。

您应该使用单元格背景视图。正如 Pulkit 已经写的那样。

于 2012-10-30T13:55:52.830 回答