Swift4-UIButton在UIView中使用addTarget时出错
这是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
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:“不要忘记,您可以通过单击其复选标记将其标记为已接受答案。”,在你被接受的答案上划线是件好事