在UIButton
的扩展程序中,我创建了一个按钮并添加其目标。
extension UIButton {
convenience init(target: AnyObject) {
self.init(type: .system)
self.addTarget(target, action: Selector("setLang:"), for: .touchUpInside)
}
}
在ViewController
中,当使用自定义初始化函数创建按钮作为目标时,我传递self
。
这在将我的代码升级到Swift 3之前工作正常。但是,现在,当点击按钮时我收到错误:
由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [MyApp.ViewController setLang:]:无法识别的选择器发送到实例xxx
在ViewController
内部,声明了以下被调用的函数:
func setLang(button: UIButton) {
//...
}
任何想法?
提前谢谢!
答案 0 :(得分:1)
我从苹果开发者论坛找到了解决方案。这可能会对你有帮助。
selectionButton.addTarget(self, action: #selector(SingleQuestionViewController.selected(_:)), for: .touchUpInside)
答案 1 :(得分:0)
//尝试这样,我希望它对你有用。
self.addTarget(target, action: NSSelectorFromString("setLang:"), for: .touchUpInside)
答案 2 :(得分:0)
发现问题。我不需要像以前那样声明函数,而是需要按照以下方式执行:
func setLang(_ button: UIButton) {
//...
}
希望这有助于其他窥视。