滚动表滚动时,TableViewCell背景颜色将被禁用



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

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

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

更改所选行背景的最佳方法是在创建单元格时更改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;
}

这是不起作用的,因为细胞被重复使用。因此,您的背景颜色可能会在电池重复使用后尽快被覆盖。

您应该使用单元格背景。正如普尔基特(Pulkit)已经写的那样。

相关内容

  • 没有找到相关文章

最新更新