不同ViewController的选择器
问题描述:
在UIButton
的扩展中,我创建一个按钮并添加它的目标。不同ViewController的选择器
extension UIButton {
convenience init(target: AnyObject) {
self.init(type: .system)
self.addTarget(target, action: Selector("setLang:"), for: .touchUpInside)
}
}
在ViewController
,使用自定义init函数创建按钮,作为靶的情况下,我通过self
。
这工作得很好升级我的代码斯威夫特3.前然而,现在轻点按钮说法时,我收到一个错误:
终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因是:“ - [MyApp的。视图控制器setLang:]:无法识别的选择发送到实例XXX
内部ViewController
有以下功能宣称,应该被称为:
func setLang(button: UIButton) {
//...
}
有什么想法?
在此先感谢!
答
发现问题。相反,声明函数像以前那样,我需要做的是通过以下方式:
func setLang(_ button: UIButton) {
//...
}
希望这有助于其他偷看。
答
//试试这个,我希望它能适合你。
self.addTarget(target, action: NSSelectorFromString("setLang:"), for: .touchUpInside)
答
我发现苹果开发者论坛的解决方案。这可能会帮助你。
selectionButton.addTarget(self, action: #selector(SingleQuestionViewController.selected(_:)), for: .touchUpInside)
你显然没有仔细阅读这个问题。我创建了一个扩展,以通俗易懂的方式创建按钮。这也意味着,ViewController可能并不会是相同的。因此,您既可以使用'self'也不使用特殊的VC来调用该函数。 – LinusGeffarth