在Swift中使用“addTarget”方法在按钮上设置操作时,有没有办法将参数传递给我想要触发的函数?假设我有一个简单的场景:
let button = UIButton()
button.addTarget(self, action: #selector(didPressButton), for: .touchUpInside)
@objc func didPressButton() {
// do something
}
显然,上面的代码工作正常,但是假设我想让'didPressButton'函数接受一个参数:
@objc func didPressButton(myParam: String) {
// do something with myParam
}
有没有方法可以将参数传递给'addTarget'方法中的函数?类似于:
let button = UIButton()
button.addTarget(self, action: #selector(didPressButton(myParam: "Test")), for: .touchUpInside)
@objc func didPressButton(myParam: String) {
// do something with myParam
}
我来自JavaScript背景,在JavaScript中,通过简单地传递一个匿名函数,然后调用'didPressButton'函数来实现这个行为是非常简单的。但是,我不太清楚如何用swift实现这个行为。通过使用闭包可以使用类似的技术吗?或者'#selector'关键字阻止我做类似的事情吗?
感谢所有能帮忙的人!
2条答案
按热度按时间qyyhg6bp1#
简短的回答是否定的。
目标选择器机制只在参数中发送目标,如果字符串是UIButton子类的一部分,那么你可以从那里获取它。
slsn1g292#
在iOS中是不可能做到这一点的。你可以在选择器中获得视图,在你的情况下,它是一个按钮。