2016-09-21 65 views
3

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

有什么想法?
在此先感谢!

回答

0

发现问题。相反,声明函数像以前那样,我需要做的是通过以下方式:

func setLang(_ button: UIButton) { 
    //... 
} 

希望这有助于其他偷看。

0

//试试这个,我希望它能适合你。

self.addTarget(target, action: NSSelectorFromString("setLang:"), for: .touchUpInside) 
0

我发现苹果开发者论坛的解决方案。这可能会帮助你。

selectionButton.addTarget(self, action: #selector(SingleQuestionViewController.selected(_:)), for: .touchUpInside) 
+0

你显然没有仔细阅读这个问题。我创建了一个扩展,以通俗易懂的方式创建按钮。这也意味着,ViewController可能并不会是相同的。因此,您既可以使用'self'也不使用特殊的VC来调用该函数。 – LinusGeffarth