以编程方式添加到UIButton的addTarget给了'发送给类的无法识别的选择器'

时间:2016-06-29 06:29:40

标签: ios swift uibutton

我正在尝试学习如何创建按钮目标操作,但是,当我按下按钮时,我收到了LLDB错误,并且我被告知这是一个“无法识别的选择器发送到课堂”。

我在哪里错了?

StatusCell.swift:

let phoneIcon: UIButton = {
        let iv = UIImageView()

        iv.translatesAutoresizingMaskIntoConstraints = false
        iv.image = UIImage(named: "Phone3")?.imageWithRenderingMode(.AlwaysTemplate)

        let phoneBtn = UIButton(type: .Custom)

        phoneBtn.addTarget(CallButton.self, action: #selector(CallButton.buttonPressed(_:)), forControlEvents: .TouchDown)
        phoneBtn.addTarget(CallButton.self, action: #selector(CallButton.buttonReleased(_:)), forControlEvents: .TouchUpInside)

        phoneBtn.translatesAutoresizingMaskIntoConstraints = false
        phoneBtn.setImage(iv.image!, forState: .Normal)
        phoneBtn.tintColor = UIColor(r: 224, g: 224, b: 224)

        return phoneBtn

    }()

这是我调用buttonPressed和buttonReleased的CallButton类。

class CallButton: UIControl {

    func buttonPressed(sender: AnyObject?) {
        print("Pressed")
    }
    func buttonReleased(sender: AnyObject?) {
        print("Let go")
    }

}

2 个答案:

答案 0 :(得分:1)

参数target的值必须是CallButton的实例,而不是类型本身。

答案 1 :(得分:0)

您正在设置类本身而不是一个实例,作为操作的目标。

因此,您设置为操作的方法应该作为类方法实现,不是实例方法:

class func buttonPressed(sender: AnyObject?) {
    print("Pressed")
}