Swift 4 在UITableViewCell中禁用UIButton的正确方法



我需要知道如何正确禁用 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
}

这样,按钮会吃掉点击,但在禁用时不执行任何操作,因此,不应选择单元格。

最新更新