在 UITableView 中点击时更改单元格的颜色

Posted

技术标签:

【中文标题】在 UITableView 中点击时更改单元格的颜色【英文标题】:change the color of the cell when it is tapped in UITableView 【发布时间】:2011-11-10 04:27:57 【问题描述】:

我在我的应用程序中使用 UITableView,并且我在文件 DealsCC.xib 中创建了自定义单元格,当点击单元格时,单元格的颜色应更改为蓝色,但它不会在我的代码中发生。我写代码如下:

static NSString *MyIdentifier = @"dealsCC";
    dealsCC *cell = (dealsCC *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    [cell selectionStyle:UITableViewCellSelectionStyleBlue];

我想在一行中提到这一点

[cell selectionStyle:UITableViewCellSelectionStyleBlue];

存在警告消息,它是“dealsCC 可能无法响应 -selectionStyle”

请帮我解决这个问题 提前谢谢。

【问题讨论】:

【参考方案1】:

请查看以下***链接,请检查您是否已正确关注它们 1)link1 2)link2 3)enter link description here

【讨论】:

【参考方案2】:

在表格视图单元格的自定义类中试试这个

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
       self.selectionStyle = UITableViewCellSelectionStyleBlue;
       [super setSelected:selected animated:animated];


警告是因为方法应该是

[cell setSelectionStyle:UITableViewCellSelectionStyleBlue];

而不是[cell selectionStyle:UITableViewCellSelectionStyleBlue];

【讨论】:

【参考方案3】:

使用cell.selectionStyle = UITableViewCellSelectionStyleGray; 更改单元格选择的样式。但这里selectionStyle 只接受UITableViewCellSelectionStyle 类型的输入。

要更改颜色,您需要使用 Image。使用selectedBackgroundView.image 属性并关注tutorial Link

或者你也可以试试

    cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
    cell.selectedBackgroundView.backgroundColor = [UIColor redColor];

编辑:

好的,我正在更新代码,以防您在单元格上有任何其他控件,然后您可以尝试以下代码。

// 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] autorelease];
     v.backgroundColor = [UIColor redColor]; // any color of your choice.
     cell.selectedBackgroundView = v;
      // After this line add all other controlls you are adding...
     
// Set up the cell...
cell.textLabel.text = @"foo";
return cell;

【讨论】:

你尝试了哪一个。我给了你3种方法。第二个选项肯定会起作用。您是否在 Cell 上使用不同的图像。然后你需要在 SelectionStyle 时更改它...

以上是关于在 UITableView 中点击时更改单元格的颜色的主要内容,如果未能解决你的问题,请参考以下文章

swift - 在UITableView中选择单元格时如何更改按钮名称?

UITableView - 如何在拖放期间更改单元格的背景颜色?

如何在 Swift 中动态更改包含 UICollectionView 单元格的 UITableView 单元格的高度?

UITableView 重新加载部分时的内容插入更改

在普通样式的 UITableView 中更改自定义 UITableViewCell 单元格的背景颜色

更改 UITableView 中移动单元格的默认图标