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

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

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

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

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

谢谢。

【问题讨论】:

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

标签: ios uitableview


【解决方案1】:

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

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

  1. cell.selectionStyle = UITableViewCellSelectionStyleNone;cellForRowAtIndexPath
  2. self.selectionStyle = UITableViewCellSelectionStyleNone; 在 Cell 的自定义子类中或
  3. 如果您使用的是 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多