Swift 4 在 UITableViewCell 中禁用 UIButton 的正确方法
Swift 4 Correct way of disabling a UIButton in UITableViewCell
我需要知道如何正确禁用 TableViewCell 中的按钮,以便在触摸禁用按钮区域时单元格不会被选中?现在我可以看到禁用的按钮,所以如果用户尝试触摸变灰的按钮,该行将被选中而不是什么都没有发生!我看了很多,但网络上充满了关于禁用按钮的不相关回答,而且没有人谈论 tableviewcells 的问题。
由于按钮在禁用后不再接收任何触摸事件,因此解决方案可能不是实际禁用按钮而是伪造它。
您可以创建一个变量来维护按钮的状态:
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 时,这将使按钮标题变灰。
然后,在您的操作方法中,您在开头插入一行用于早期 return:
func buttonClicked(sender: UIButton) {
if !isEnabled {
return
}
// Otherwise, handle click event
}
这样一来,按钮就可以点击,但在禁用时不会执行任何操作,因此不应选择该单元格。
我需要知道如何正确禁用 TableViewCell 中的按钮,以便在触摸禁用按钮区域时单元格不会被选中?现在我可以看到禁用的按钮,所以如果用户尝试触摸变灰的按钮,该行将被选中而不是什么都没有发生!我看了很多,但网络上充满了关于禁用按钮的不相关回答,而且没有人谈论 tableviewcells 的问题。
由于按钮在禁用后不再接收任何触摸事件,因此解决方案可能不是实际禁用按钮而是伪造它。
您可以创建一个变量来维护按钮的状态:
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 时,这将使按钮标题变灰。
然后,在您的操作方法中,您在开头插入一行用于早期 return:
func buttonClicked(sender: UIButton) {
if !isEnabled {
return
}
// Otherwise, handle click event
}
这样一来,按钮就可以点击,但在禁用时不会执行任何操作,因此不应选择该单元格。