使用xcode 7 b4 swift 2.x现在支持选择器。
如何使用选择器API而不是stringy类型的“functionName:”?
let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "functionName:")
@selector() in Swift? 这个问题很相似,但它引用了swift 1.x缺乏选择器支持。
答案 0 :(得分:4)
<强>更新:
强>
您将很高兴知道,从Swift 2.2和Xcode 7.3开始,它现在可以在没有定义选择器的方法声明时发出警告。引入了新语法。我们不再将选择器定义为"myMethodToCall:"
或Selector("myMethodToCall:")
。像这样定义它们:
#selector(ViewController.myMethodToCall(_:))
//or without a parameter
#selector(ViewController.myMethodToCall)
Xcode将提供将现有选择器转换为这种新语法的功能。干杯!
<强>原件:
强>
无法在Xcode 7.2中创建一个选择器,如果提供的函数名称不存在,将导致显示警告。我们仍然需要将Selector
结构与&#39; stringy&#39;功能名称。
在performSelector上:
您所说的API是performSelector
API。您可以像这样使用它:
self.performSelector("functionName")
//or
self.performSelector(Selector("functionName"))
答案 1 :(得分:0)
Swift 2.2 和 Xcode 7.3 以后use of sting literals as selector in selector methods has been deprecated.
参考Apple document for Xcode 7.3 release notes
您必须使用#selector expression
,如下所示:
#selector(Class.Method)
示例:
myButton.addTarget(objButton, action: #selector(LoginViewController.checkLogin), userInfo: nil. repeats: false)