点击单元格显示下面的视图
Posted
技术标签:
【中文标题】点击单元格显示下面的视图【英文标题】:Tapping cell shows the view that is below 【发布时间】:2015-03-17 18:52:03 【问题描述】:我正在创建一个带有自定义单元格的表格视图。
每个单元格上都有三个按钮。我添加了一个视图,它应该占据单元格的宽度和高度,重叠三个按钮。我正在使用它来创建一个可滑动的单元格。
作为叠加层的视图背景为白色,不透明,但在模拟器上测试应用程序,我发现点击单元格时,按钮显示为浅色,请看图。
我应该怎么做才能避免看到按钮。如果覆盖视图设置为不透明,为什么现在会发生这种情况。 第二个问题是当点击单元格时,左边的红色条,也是一个视图,消失了......
谢谢。
【问题讨论】:
似乎红色条(我假设它是一个视图)和按钮上方重叠的白色视图都遇到了完全相同的问题。您是在情节提要中添加它们还是以编程方式添加它们?你能显示一些代码吗? @TravisM.,都添加到故事板中。 【参考方案1】:我相信这是UITableViewCell
的默认选择样式的结果。让我们尝试删除默认样式并对其进行自定义。
尝试设置(取决于您的实现):
cell.selectionStyle = UITableViewCellSelectionStyleNone;
内cellForRowAtIndexPath
或
self.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。点击单元格/文本字段时显示选择器视图