在 swift 中点击禁用 tableview 单元格按钮

Disable tableview cell button on tap in swift

我的按钮工作正常,只是不知道如何禁用它。我不确定我是否可以从 addSomething(sender: UIButton) 函数中引用它,就像我引用 sender.tag 一样。 任何想法?感谢您的帮助。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let myCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! ExploreCell

    // Configure the cell...
    myCell.configureCell(teams[indexPath.row])

    myCell.addSomethingButton.tag = indexPath.row
    myCell.addSomethingButton.addTarget(self, action: #selector(self.addSomething), forControlEvents: .TouchUpInside)

    myCell.addSomethingButton.enabled = true

    //disable cell clicking
    myCell.selectionStyle = UITableViewCellSelectionStyle.None

    return myCell
}

你需要做的是将所有被点击的按钮存储在一个数组中,以检查该标签(当前indexPath.row)的按钮是否被点击:

class ViewController: UIViewController {
    var tappedButtonsTags = [Int]()

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let myCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! ExploreCell

        // Configure the cell...
        myCell.configureCell(teams[indexPath.row])

        myCell.addSomethingButton.tag = indexPath.row

        // here is the check:
        if tappedButtonsTags.contains(indexPath.row) {
            myCell.addSomethingButton.enabled = false
        } else {
            myCell.addSomethingButton.addTarget(self, action: #selector(self.addSomething), forControlEvents: .TouchUpInside)
            myCell.addSomethingButton.enabled = true
        }

        //disable cell clicking
        myCell.selectionStyle = UITableViewCellSelectionStyle.None

        return myCell
    }

    // I just Implemented this for demonstration purposes, you can merge this one with yours :)
    func addSomething(button: UIButton) {
        tappedButtonsTags.append(button.tag)
        tableView.reloadData()
        // ...
    }
}

希望对您有所帮助。