单击单元格本身而不是按钮时,(静态)单元格中的按钮会消失

Posted

技术标签:

【中文标题】单击单元格本身而不是按钮时,(静态)单元格中的按钮会消失【英文标题】:Button in (static) cell disappears when clicking on the cell itself instead of the button 【发布时间】:2016-04-13 16:14:28 【问题描述】:

我的(静态)单元格上的代码有一个奇怪的问题。在多个单元格中,我有一个 UIButton。当我点击它时,一切都很好,但是当我点击按钮旁边的区域(仍然在单元格本身中)时,它变成灰色(选择单元格时的颜色)+按钮也消失了!

我尝试使用以下代码将单元格的背景更改为白色:

    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) 
    let myBackView=UIView(frame:cell.frame)
    myBackView.backgroundColor = UIColor.clearColor()
    cell.selectedBackgroundView = myBackView


但问题仍然存在。 这是不推送静态单元格的时候 这是我按下单元格的时候(不是单元格内的按钮)

【问题讨论】:

【参考方案1】:

这是选择 UITableViewCells 时的常见问题,请参阅Why do all backgrounds disappear on UITableViewCell select?

如果您不打算选择单元格,请实现this delegate method:

- (NSIndexPath * _Nullable)tableView:(UITableView * _Nonnull)tableView willSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath

indexPath 是您的单元格之一时返回nil。这将禁用对此单元格的选择。

如果不打算选择您的任何单元格,那就更简单了,只需将您的 UITableView's allowsSelection 设置为 NO(这也可以在 Interface Builder 中完成)。

【讨论】:

嗨,我确实需要选择一些单元格。我尝试了“willSelectRowAtIndexPath”,但它并没有解决我的问题(无法选择需要工作的单元格,并且按钮仍然消失)。是因为我使用了 7 个静态单元格吗? 你看到我发布的第一个链接了吗? (***.com/questions/7053340/…) 我认为按钮不会消失,它们的背景会变得透明,并且由于您的图像和文本是白色的,因此您什么都看不到了。 嘿,找到了一个对我有用的解决方案:我通过 IB 将静态单元格链接到代码,然后执行 mailCell.selectionStyle = UITableViewCellSelectionStyle.None 这让我的按钮保持工作状态,但单元格没有执行整个消失行为。 IIRC 你也可以在Interface Builder中设置selectionStyle 是的,确实,但出于某种原因,我更喜欢在代码中使用它:D 但感谢您的帮助,它让我朝着正确的方向前进

以上是关于单击单元格本身而不是按钮时,(静态)单元格中的按钮会消失的主要内容,如果未能解决你的问题,请参考以下文章

在Qtablewidget单元格中单击了Catch按钮

单击列表视图中自定义单元格中按钮的侦听器

根据获得的当前单元格的索引路径,自定义单元格中的按钮单击功能

reloadData后无法单击tableView单元格中的按钮

使用单元格中的按钮转到详细视图控制器

如何通过单击单元格中的按钮来删除 tableView 中的单元格?使用核心数据