是否可以将闭包传递给选择器?

时间:2019-03-04 18:03:17

标签: ios swift

有可能迅速将闭包传递给选择器吗?

例如,是否可以重写此代码:

let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(doneAction(_:)))

@objc func doneAction(_ sender: UIBarButtonItem){
    self.myTextField?.resignFirstResponder()
}

成为:

let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: { _ sender in 
    self.myTextField?.resignFirstResponder()
})

我已经尝试了上面的代码并得到:

Cannot convert value of type '() -> ()' to expected argument type 'Selector'

1 个答案:

答案 0 :(得分:1)

不可能。如果参数类型是选择器,则必须传入选择器。有些类使用不同的方法提供了这两个选项,但是UIBarButtonItem并不是其中之一。