Swift 4在UITableViewCell

时间:2017-10-22 19:50:32

标签: swift uitableview uibutton didselectrowatindexpath

我需要知道如何正确地禁用TableViewCell中的按钮,以便在触摸禁用的按钮区域时不会选择单元格?现在我可以看到禁用按钮,所以如果用户试图触摸灰色的按钮,则选择行而不是发生任何事情!我看了很多,但网上充满了关于禁用按钮的无关回答,而且他们没有谈论tableviewcells的问题。

1 个答案:

答案 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
}

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