在我的应用程序中,我有一个tableView,我在选中时更改了单元格的背景颜色,我将该代码编写为
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor whiteColor];
}
问题是当我滚动tableView时,单元格的背景颜色被禁用,白色不可见意味着删除了背景颜色效果。滚动时,表视图重用了单元格,因此删除了单元格背景效果。我知道我在哪里遇到问题,但我不知道如何处理这个问题,并保持所选单元格的背景颜色为白色,即使表格视图滚动。请告诉我这个问题的解决方案。
答案 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所写的那样。