0

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

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

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

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

4

3 回答 3

2

您在代码中使用了错误的选择器。选择器应该像#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.
}
于 2018-07-27T10:38:07.223 回答
1

这是错误的:

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

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

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

你需要一些其他的方法来确定哪个是正确的标签。

于 2018-07-26T12:06:43.213 回答
0

它应该是这样的:

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

更新它。

于 2018-07-26T12:09:04.080 回答