无法识别的选择器发送到类

Una*_*lik 3 ios swift swift3

我已经看到了,这是一个常见的问题,但我找不到自己的任何解决方案.

这是代码:

class ButtonViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(button)
    }

    func exmp(sender: UIButton) {
        print("hello world")
    }

    let button: UIButton = {
        let but = UIButton(frame: CGRect(x: 33, y: 33, width: 33, height: 33))
        but.setTitle("-", for: .normal)
        but.titleLabel?.textColor = UIColor.white
        but.layer.cornerRadius = 10
        but.backgroundColor = UIColor.red
        but.addTarget(ButtonViewController.self, action: #selector(ButtonViewController.exmp(sender:)), for: .touchDown)
        return but
    }
}
Run Code Online (Sandbox Code Playgroud)

问题: 出现红色按钮,但是当我点击它时,我收到"无法识别的选择器发送到课堂"错误.

任何帮助表示赞赏!谢谢.

vac*_*ama 7

您正在将未识别的选择器发送到类,因为您设置了错误的目标.目标应该是self而不是ButtonViewController.self:

but.addTarget(self, action: #selector(ButtonViewController.exmp(sender:)), for: .touchDown)
Run Code Online (Sandbox Code Playgroud)

你的#selector作品,但对于Swift 3,你应该把动作写成func exmp(_ sender: UIButton) {选择器#selector(exmp(_:)).注意:无论您是否重写exmp,您都可以简化选择器#selector(exmp).

  • 我已就Swift提交了一个关于Swift的错误.编译器一方面不应该用`#selector`语法帮助你,而是让你在另一方面设置错误的目标."无法识别的选择器"应该是一纸空文! (2认同)