点击单元格显示下面的视图

Posted

技术标签:

【中文标题】点击单元格显示下面的视图【英文标题】:Tapping cell shows the view that is below 【发布时间】:2015-03-17 18:52:03 【问题描述】:

我正在创建一个带有自定义单元格的表格视图。

每个单元格上都有三个按钮。我添加了一个视图,它应该占据单元格的宽度和高度,重叠三个按钮。我正在使用它来创建一个可滑动的单元格。

作为叠加层的视图背景为白色,不透明,但在模拟器上测试应用程序,我发现点击单元格时,按钮显示为浅色,请看图。

我应该怎么做才能避免看到按钮。如果覆盖视图设置为不透明,为什么现在会发生这种情况。 第二个问题是当点击单元格时,左边的红色条,也是一个视图,消失了......

谢谢。

【问题讨论】:

似乎红色条(我假设它是一个视图)和按钮上方重叠的白色视图都遇到了完全相同的问题。您是在情节提要中添加它们还是以编程方式添加它们?你能显示一些代码吗? @TravisM.,都添加到故事板中。 【参考方案1】:

我相信这是UITableViewCell 的默认选择样式的结果。让我们尝试删除默认样式并对其进行自定义。

尝试设置(取决于您的实现):

    cell.selectionStyle = UITableViewCellSelectionStyleNone;cellForRowAtIndexPathself.selectionStyle = UITableViewCellSelectionStyleNone; 在 Cell 的自定义子类中或 如果您使用的是 IB,则在 Interface Builder 中的“Selection”下的“None”。

然后,您可以在 UITableViewCell 的自定义类中实现自定义选择样式。在您的初始化方法中,添加如下内容:

self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.bounds]; self.selectedBackgroundView.backgroundColor = [UIColor lightGrayColor];

【讨论】:

【参考方案2】:

上述答案将完全关闭单元格选择突出显示,这可能不是您想要的。

经过多次测试后,似乎发生的情况是,当一个单元格被选中时,ios 会将该单元格上所有视图的背景颜色转换为 clearColor。

因此,解决方法是在选择时简单地将单元格视图的颜色设置为正常:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    let cell = tableView.cellForRowAtIndexPath(tableView.indexPathForSelectedRow()!) as! MyCell
    cell.MyViewOnMyCell.backgroundColor = UIColor.redColor()

其他答案请参见this question。

【讨论】:

以上是关于点击单元格显示下面的视图的主要内容,如果未能解决你的问题,请参考以下文章

单击表格视图单元格时加载缓慢

自定义表格视图单元格中的 UITextField。点击单元格/文本字段时显示选择器视图

Obj-C - 点击自定义表格视图单元格中的删除表格视图行按钮

按下单元格中的按钮时显示新视图

核心数据数组

表格视图单元格未显示在情节提要中