单击单元格本身而不是按钮时,(静态)单元格中的按钮会消失
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 但感谢您的帮助,它让我朝着正确的方向前进以上是关于单击单元格本身而不是按钮时,(静态)单元格中的按钮会消失的主要内容,如果未能解决你的问题,请参考以下文章
根据获得的当前单元格的索引路径,自定义单元格中的按钮单击功能