点击时 UItableviewcell 背景颜色

Posted

技术标签:

【中文标题】点击时 UItableviewcell 背景颜色【英文标题】:UItableviewcell background color while click 【发布时间】:2012-08-11 10:29:35 【问题描述】:

如何在 uitableview 中未选中时为选择或选中标记并重置为以前颜色的整个单元格设置颜色?我尝试过,但它显示背景颜色一秒。任何人都可以帮我编码。

【问题讨论】:

【参考方案1】:

好的,我认为您想在选中时为单元格着色,如果未选中则为另一种颜色,将那些选定的单元格保留为以前的颜色。所以在全球范围内有一个数组状态。在 didSelectRowAtIndexPath 中:

if (![myMutableArray containsObject:indexPath]) 
    [myMutableArray addObject:indexPath]; 

else
    [myMutableArray removeObject:indexPath];


[sampleTableView reloadData];

在 cellForRowAtIndexPath 中:

if ([myMutableArray containsObject:indexPath]) 
    cell.backgroundColor = [UIColor redColor];

else
    cell.backgroundColor = [UIColor greenColor];

【讨论】:

请准确、准确地说明您需要做什么以及您使用了什么,以便其他人了解您的情况。 你明白了我的想法,但如果单元格被选中并且如果同一个单元格未选中意味着它应该是无色的,我想改变颜色。在上面的解决方案中它不起作用。请帮助@AJS跨度> 【参考方案2】:

在你的头文件中创建一个 NSIndexPath 的对象(让它在这里使用的检查索引路径)并分配它的属性并合成它。在你的 tableView 的方法 cellForRowAtIndexPath 中使用:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

现在在您的 didSelectRowAtIndexPath 中使用以下内容:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

if(self.checkedIndexPath)

    UITableViewCell* uncheckCell = [tableView cellForRowAtIndexPath:self.checkedIndexPath];
    uncheckCell.backgroundColor = [UIColor green];

UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.backgroundColor = [UIColor redColor];
self.checkedIndexPath = indexPath;

   

使用此选项,您的单元格将在选中时显示为红色,如果未选中则显示为绿色。

【讨论】:

它工作正常,但问题是在取消选中单元格时,绿色也只出现在下一个单元格之后。同样的方式继续到其他单元格。我该怎么办? 我已经发布了另一个答案。看看它是否有助于您的需要。【参考方案3】:

可以设置UITableViewCell的背景颜色

cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell_normal.png"]]

然后在点击事件上颜色会自动改变。

您可以通过以下方式更改选择的颜色:-

cell.selectionStyle = UITableViewCellSelectionStyleBlue;

用于更改 textLabel 颜色。

cell.textLabel.textColor = [UIColor blackColor];

【讨论】:

但它仅适用于单元格背景而不适用于单元格内容,我尝试使用 cell.contentview 。它不起作用@Tejeshwar Gill 在我的表格视图单元格中,我只有文字@Tejeshwar Gill 您需要做什么?请明确说明。您是要更改选中单元格的颜色还是选中单元格的selectionStyle,如果未选中则重新设置。请说清楚。跨度> 我想在选择单元格时更改单元格颜色,如果我再次单击单元格,则应该显示以前的颜色。@AJS 试试这个 cell.textLabel.textColor = [UIColor BlueColor];

以上是关于点击时 UItableviewcell 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITableViewCell点击时子视图背景透明的解决方法

使用 UIAppearence 设置 UITableViewCell 选择的背景颜色不起作用

UITableViewCell 选择样式更改所有子视图的背景颜色

使用笔尖的 UITableViewCell 背景颜色

选择时 UITableViewCell 背景颜色中的目标 c 子视图

在编辑模式下重新排序时更改 UITableViewCell 的背景颜色