我需要知道如何正确地禁用TableViewCell中的按钮,以便在触摸禁用的按钮区域时不会选择单元格?现在我可以看到禁用按钮,所以如果用户试图触摸灰色的按钮,则选择行而不是发生任何事情!我看了很多,但网上充满了关于禁用按钮的无关回答,而且他们没有谈论tableviewcells的问题。
答案 0 :(得分:2)
由于按钮在禁用后不再接收任何触摸事件,因此解决方案可能是实际上不会禁用该按钮而是伪造它。
您可以创建一个变量来维护按钮的状态:
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
}
这样,按钮会禁用点击,但在禁用时不会执行任何操作,因此不应选择单元格。