xoo*_*ler 3 selector ios swift
是否可以通过选择器传递int变量,例如#selector(run(1))或#selector(run(2))
必要时提供更多背景信息:
let button = UIBarButtonItem(title: "Run",
style: UIBarButtonItemStyle.Plain,
target: self,
action: #selector(run(1)))
Run Code Online (Sandbox Code Playgroud)
向某些iOS开发者确认后,还不能执行此操作。
但是还有另一种选择。您可以在action方法中接收发送方对象。您可以将任何属性添加到发送方类。并采取行动中的方法。
例如:
let button = UIBarButtonItem(title: "Run",
style: .Plain,
target: self,
action: #selector(run(_:)))
button.tag = 1
Run Code Online (Sandbox Code Playgroud)
这样你就可以收到
func run(sender: UIBarButtonItem) {
let passedInteger = sender.tag
}
Run Code Online (Sandbox Code Playgroud)
但是,仅当传递的参数是单个Integer时才有效。如果要传递任何数据类型的多个参数,请按以下步骤操作->查看第二种方法
子类UIBarButtonItem
class MyBarButtonItem: UIBarButtonItem {
var passedParameter: String?
}
Run Code Online (Sandbox Code Playgroud)
并像这样收到它
let button = MyBarButtonItem(title: "Run",
style: .Plain,
target: self,
action: #selector(run(sender:)))
button.passedParameter = "John Doe"
func run(sender: MyBarButtonItem) {
// now you have the parameter
let parameter = sender.passedParameter
}
Run Code Online (Sandbox Code Playgroud)