Swift4-UIButton在UIView中使用addTarget时出错

Swift4-UIButton在UIView中使用addTarget时出错,swift,uibutton,Swift,Uibutton,这是UIVIew中带有addTarget的代码,位于required init required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) hiddenButton = self.viewWithTag(9000) as? UIButton hiddenButton.addTarget(self, action: "hiddenCameraAction:", for: .touchUpInsi

这是UIVIew中带有addTarget的代码,位于
required init

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    hiddenButton = self.viewWithTag(9000) as? UIButton
    hiddenButton.addTarget(self, action: "hiddenCameraAction:", for: .touchUpInside)
}
这是我的选择功能

func hiddenCameraAction(_ sender: Any)  {
    //Do something
}
当我单击
UIView
中的按钮时,应用程序因错误而崩溃:

TeachSystem[27065:8131674]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[TeachSystem.CameraView hiddenCameraAction::]:无法识别的选择器发送到实例0x121d11050' *第一次抛出调用堆栈: (0x1ee830ec4 0x1eda01a40 0x1ee749c24 0x21bb74558 0x1ee8367dc 0x1ee83848c 0x21bb48454 0x21b5d5d0c 0x21b5d602c 0x21b5d502c 0x21bb81bac 0x21bb82e10 0x21bb6210c 0x21bc30f68 0x21bc33960 0x21bc2c450 0x1ee7c11f0 0x1ee7c0a54 0x1EE7B920 0x1EE7B17B1F0 0x21B450x21BB46E40X1057F40) libc++abi.dylib:以NSException类型的未捕获异常终止


问题:如何解决此错误?

操作应定义为
\selector

hiddenButton.addTarget(self, action: #selector(hiddenCameraAction(_:)), for: .touchUpInside). 

操作应定义为
#选择器

hiddenButton.addTarget(self, action: #selector(hiddenCameraAction(_:)), for: .touchUpInside). 

您所需要做的就是将字符串放入括号中

action: ("hiddenCameraAction:")
。。。然而,这是一种被弃用的方法,即如何实现您需要实现的目标


我建议您开始使用选择器,它更安全,因为编译器会立即向您提供错误信息,并且代码不会以错误的方法名或其他方式运行

语法是:
#选择器(方法(外部参数:)


。。。您只需开始键入,编译器就会建议您可以将什么Objective-C方法放入其中

action: #selector(hiddenCameraAction(_:))

您所需要做的就是将字符串放入括号中

action: ("hiddenCameraAction:")
。。。然而,这是一种被弃用的方法,即如何实现您需要实现的目标


我建议您开始使用选择器,它更安全,因为编译器会立即向您提供错误信息,并且代码不会以错误的方法名或其他方式运行

语法是:
#选择器(方法(外部参数:)


。。。您只需开始键入,编译器就会建议您可以将什么Objective-C方法放入其中

action: #selector(hiddenCameraAction(_:))

操作应定义为
#选择器
,函数应具有
@objc
推论

hiddenButton.addTarget(self, action: #selector(hiddenCameraAction(_:)), for: .touchUpInside)
隐藏摄像头动作功能

@objc func hiddenCameraAction(_ sender: Any)  {
    //Do something
}

@objc推断允许Objective-C运行时访问hiddenCameraAction方法。

操作应定义为
#选择器
,函数应具有
@objc
推论

hiddenButton.addTarget(self, action: #selector(hiddenCameraAction(_:)), for: .touchUpInside)
隐藏摄像头动作功能

@objc func hiddenCameraAction(_ sender: Any)  {
    //Do something
}
@objc推断允许Objective-C运行时访问hiddenCameraAction方法。

stackoverflow:“不要忘记,您可以通过单击其复选标记将其标记为已接受答案。”,最好标记您的已接受答案stackoverflow:“不要忘记,您可以通过单击其复选标记将其标记为已接受答案。”,在你被接受的答案上划线是件好事