“ #selector”的参数未引用“ @objc”方法

时间:2018-07-26 12:02:50

标签: swift4 selector

我以编程方式创建了UIButton名称为plusButton和UILabel名称为itemLabel,并为此按钮添加了目标;

plusButton.addTarget(self, action: #selector(plusButtonClicked(itemLabel)), for: UIControlEvents.touchUpInside)

@objc func plusButtonClicked(_ sender : UILabel){
   //MY CODE
}

我收到“'#selector'的参数未引用'@objc'方法,属性或初始化程序”错误。当我删除函数中的参数时,没有任何错误。但是,当它是函数中的参数时,我会报错。

3 个答案:

答案 0 :(得分:0)

这是错误的:

@objc func plusButtonClicked(_ sender : UILabel)
                                        ^^^^^^^

您不能将标签作为按钮点击的参数发送。参数是按钮,您不能更改它。

您无法通过尝试在选择器中更改参数来解决这些规则。选择器没有参数。

您还需要其他方法来找出正确的标签。

答案 1 :(得分:0)

应为:

plusButton.addTarget(self, action: #selector(plusButtonClicked(_ :)), for: UIControlEvents.touchUpInside)

更新它。

答案 2 :(得分:0)

您在代码中使用了错误的选择器。对于您的函数,选择器应写为#selector(plusButtonClicked(_ :)

所有代码都应该像这样...

plusButton.addTarget(self, action: #selector(plusButtonClicked(_ :)), for:   UIControlEvents.touchUpInside)

@objc func plusButtonClicked(sender:Any) {
    let button = sender as? UIButton
    // you can do whatever want with button.
}