swift Custom Button扩展了UIButton

时间:2017-08-31 19:11:28

标签: ios uibutton

我想扩展UIButton类来制作我自己的单选按钮。

class UIRadioButton : UIButton {
        var checked = CheckedEnum.unchecked

        enum CheckedEnum{
            case checked , unchecked
        }
    }

它是Viewcontroller中的内部类。但是,当我想让这个按钮发送动作来查看Controller时,正如我通常所做的那样,它不起作用。这是我的按钮连接窗口: enter image description here 它通常是按钮连接窗口: enter image description here

1 个答案:

答案 0 :(得分:0)

在我看来,你应该实现你的UITableViewCell的委托,并在按钮接收到触摸事件时调用它的方法。例如:

protocol CellButtonDelegate: class {
    func cellButton(cell: UITableViewCell, didTouch button: UIButton)
}

class Cell: UITableViewCell {
    weak var delegate: CellButtonDelegate?

    @IBAction func buttonTouched(sender: UIButton) {
          delegate?.cellButton(cell: self, didTouch button: sender)
    }
}

然后使视图控制器成为每个表视图单元的委托并处理此事件。

extension ViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, 
  cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = tableView. dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! Cell
        // configure cell
        cell.delegate = self
    }
}

extension ViewController: CellButtonDelegate {
    func cellButton(cell: UITableViewCell, didTouch button: UIButton) {
        // handle button touch event, save indexPath of the cell to alter representation of table view after reloading data etc.
    }
}

希望这会有所帮助。