如何使用swift 2 performSelector系列API?

时间:2015-07-22 04:56:20

标签: swift

使用xcode 7 b4 swift 2.x现在支持选择器。

如何使用选择器API而不是stringy类型的“functionName:”?

let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "functionName:")

@selector() in Swift? 这个问题很相似,但它引用了swift 1.x缺乏选择器支持。

2 个答案:

答案 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.

Screenshot for apple document

参考Apple document for Xcode 7.3 release notes

您必须使用#selector expression,如下所示:

#selector(Class.Method)

示例:

myButton.addTarget(objButton, action: #selector(LoginViewController.checkLogin), userInfo: nil. repeats: false)