不同ViewController的选择器

时间:2016-09-21 11:26:16

标签: ios swift selector

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) {
    //...
}

任何想法?
提前谢谢!

3 个答案:

答案 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) {
    //...
}

希望这有助于其他窥视。