我在尝试让用户按下UIButton时遇到问题。我不断收到错误消息:无法识别的选择器已发送到实例
override func viewDidLoad() { super.viewDidLoad() button.addTarget(self, action: "buttonClick", forControlEvents: UIControlEvents.TouchUpInside) button.setTitle("Print", forState: UIControlState.Normal) button.font = UIFont(name: "Avenir Next", size: 14) button.backgroundColor = UIColor.lightGrayColor() self.view.addSubview(button) } func buttonClick(Sender: UIButton!) { myLabelInfo.text = "Hello" }
对于Swift方法,例如funcbuttonClick(Sender:UIButton)传递给addTarget选择器方法的正确字符串是什么?是“ buttonClick”,“ buttonClick:”,“ buttonClickSender:”还是其他?
funcbuttonClick(Sender:UIButton)
addTarget
您正在对该操作使用无效的方法签名。您正在提供buttonClick,但该方法有一个参数,因此签名应为buttonClick:
buttonClick
buttonClick:
button.addTarget(self, action: "buttonClick:", forControlEvents: UIControlEvents.TouchUpInside)
有关如何设置选择器格式的更多信息,您可以参考下面链接中所接受的答案。这篇文章中使用的代码可能是Objective-C,但其所有课程也可以在这里应用。
另外请注意,如果您将此代码用作Selector("buttonClicked:")操作,则此代码也将有效,但不必这样做,因为可以将字符串文字隐式转换为Selector类型。
Selector("buttonClicked:")
引用Swift与Cocoa和Objective-C一起使用
一个Objective-C选择器是一种引用Objective-C方法名称的类型。在Swift中,Objective- C选择器由Selector结构表示。您可以使用字符串文字构造选择器,例如let mySelector:Selector =“ tappedButton:”。由于字符串文字可以自动转换为选择器,因此您可以将字符串文字传递给任何接受选择器的方法。