在IOS的桌视图细胞轻拍的背景颜色变化

时间:2014-11-18 01:17:17

标签: ios uitableview

我有一个视图控制器,它有一个UITableViewController作为主视图。在函数 - tableView:cellForRowAtIndexPath中:我使用以下代码为我的单元格创建自定义视图。

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                                        CellIdentifier];

// Configure the cell...
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault      reuseIdentifier:CellIdentifier];
}


cell.backgroundView = [[UIView alloc] init];

然后我将自己的自定义视图添加到cell.backgroundView。但是,当我点击一个单元格时,单元格会变成灰色。我的代码中没有指定这应该发生的地方。为了进行一些测试,我将一些文本添加到单元格的标准部分,如下所示。

cell.textLabel.text = @"TEST";

当我跑步时,我看到了自定义视图和“TEST”标签。按下一个单元格时,出现灰色屏幕,此时“TEST”可见,我的自定义视图仍然不可见。我的猜测是必须采取其他措施来确保自定义视图可见。我正在使用tableView:didSelectRowAtIndexPath:函数来注册抽头,但奇怪的是,除第一个之外的所有抽头事件都会调用此函数。另外,我试图在这里设置背景颜色,但它不起作用。

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

}

感谢任何帮助。

5 个答案:

答案 0 :(得分:6)

tableView:cellForRowAtIndexPath:中,将每个单元格的selectionStyle属性更改为UITableViewCellSelectionStyleNone

答案 1 :(得分:0)

您可以通过将Selection的{​​{1}}属性设置为Table View Cell

来在故事板中执行相同的操作

答案 2 :(得分:0)

接受的答案对我不起作用。这个问题让我疯狂了一段时间,因为它看起来像一个"故障"加载下一个视图时的任何选择..

我的解决方案:我必须转到实际的TableViewCell(我构建的自定义单元格)的.xib文件中选择单元格并选择CellView。 (确保选择单元格,而不是其中的子视图。它将变为蓝色,如图所示)。在左侧单击"选择" - > "无&#34 ;.这个应该与使用代码完全相同,但由于某种原因它只是没有工作......

enter image description here

答案 3 :(得分:0)

保持背景颜色不变的最好方法之一是:

  • YOUR_VIEW.backgroundColor设置为clearColor
  • 然后将YOUR_VIEW.layer.backgroundColor设置为YOUR_COLOR

让我们看看 Objective-C 实现:

self.YOUR_VIEW.backgroundColor = UIColor.clearColor;
self.YOUR_VIEW.layer.backgroundColor = UIColor.YOUR_COLOR.CGColor; 

注意:不需要关闭精美的选择或突出显示动画。

答案 4 :(得分:0)

迅速

从UITableViewDataSource的cellForRowAt方法中设置cell.selectionStyle = .none