我需要知道如何正确禁用 TableViewCell 中的按钮,以便在触摸禁用的按钮区域时不会选择单元格?现在我可以看到禁用的按钮,因此如果用户尝试触摸灰色的按钮,则会选择该行,而不是什么也没发生!我看了很多,但网上充满了关于禁用按钮的不相关的答案,没有一个谈论表视图单元格的问题。
由于禁用按钮后不再接收任何触摸事件,因此解决方案可能是实际上不禁用按钮,而是伪造它。
您可以创建一个变量来维护按钮的状态:
var isEnabled: Bool = true {
didSet {
if !isEnabled {
button.setTitleColor(UIColor.gray, forState: .normal)
} else {
//Set the color back to the original value
button.setTitleColor(UIColor.black, forState: .normal)
}
}
}
每当 isEnabled 设置为 false 时,按钮标题就会变灰。
然后,在您的操作方法中,在开头插入一行以提前返回:
func buttonClicked(sender: UIButton) {
if !isEnabled {
return
}
// Otherwise, handle click event
}
这样,按钮会吃掉点击,但在禁用时不执行任何操作,因此,不应选择单元格。