有没有办法在 Swift 中使用 #selector 调用带参数的函数
Is there a way to call a function with parameters using #selector in Swift
我有一个 UIToolbar
项目数组,显示 inputField
何时成为第一响应者。
//... code
toolBar.items = [
UIBarButtonItem(title: "Button 1", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(myFunction))]
myInputField.inputAccessoryView = toolBar
是否可以使用参数从上面的示例中调用 myFunction
?
类似...
... #selector(myFunction(someParameter)))
类似于UIButton
,可以通过UIBarButtonItem
的tag
属性传递参数。
override func viewDidLoad() {
super.viewDidLoad()
let toolBar = UIToolbar()
let firstButton = UIBarButtonItem(title: "Button 1", style: UIBarButtonItemStyle.Done, target: self, action: #selector(myFunction))
let secondButton = UIBarButtonItem(title: "Button 2", style: UIBarButtonItemStyle.Done, target: self, action: #selector(myFunction))
firstButton.tag = 1
secondButton.tag = 2
toolBar.items = [ firstButton, secondButton ]
toolBar.sizeToFit()
textField.inputAccessoryView = toolBar
}
func myFunction(sender: UIBarButtonItem) {
print("Tapped: \(sender.tag)")
}
在此示例中,点击按钮会打印按钮的标签:
Tapped: 1 // Tap button 1
Tapped: 2 // Tap button 2
我有一个 UIToolbar
项目数组,显示 inputField
何时成为第一响应者。
//... code
toolBar.items = [
UIBarButtonItem(title: "Button 1", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(myFunction))]
myInputField.inputAccessoryView = toolBar
是否可以使用参数从上面的示例中调用 myFunction
?
类似...
... #selector(myFunction(someParameter)))
类似于UIButton
,可以通过UIBarButtonItem
的tag
属性传递参数。
override func viewDidLoad() {
super.viewDidLoad()
let toolBar = UIToolbar()
let firstButton = UIBarButtonItem(title: "Button 1", style: UIBarButtonItemStyle.Done, target: self, action: #selector(myFunction))
let secondButton = UIBarButtonItem(title: "Button 2", style: UIBarButtonItemStyle.Done, target: self, action: #selector(myFunction))
firstButton.tag = 1
secondButton.tag = 2
toolBar.items = [ firstButton, secondButton ]
toolBar.sizeToFit()
textField.inputAccessoryView = toolBar
}
func myFunction(sender: UIBarButtonItem) {
print("Tapped: \(sender.tag)")
}
在此示例中,点击按钮会打印按钮的标签:
Tapped: 1 // Tap button 1
Tapped: 2 // Tap button 2