有没有办法在 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,可以通过UIBarButtonItemtag属性传递参数。

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