我很感谢每个人都说使用标签,但实际上您需要扩展UIButton类并在其中简单地添加对象。
标签是解决这一问题的绝望途径。像这样扩展UIButton(在Swift 4中)
import UIKit
class PassableUIButton: UIButton{
var params: Dictionary<String, Any>
override init(frame: CGRect) {
self.params = [:]
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
self.params = [:]
super.init(coder: aDecoder)
}
}
那么您的电话可能会被致电(注意中的冒号“:” Selector(("webButtonTouched:"))
)
let webButton = PassableUIButton(frame: CGRect(x:310, y:40, width:40, height:40))
webButton.setTitle("Visit",for: .normal)
webButton.addTarget(self, action: #selector(YourViewController.webButtonTouched(_:)), for:.touchUpInside)
webButton.params["myvalue"] = "bob"
然后终于在这里抓住了一切
@IBAction func webButtonTouched(_ sender: PassableUIButton) {
print(sender.params["myvalue"] ?? "")
}
您只需执行一次并在整个项目中使用它(您甚至可以使子类具有通用的“对象”,然后将您喜欢的任何内容放到按钮中!)。或使用上面的示例在按钮中放入无穷无尽的键/字符串参数。.对于包括url,确认消息方法等内容非常有用
SO
顺便说一句,社区意识到这一点很重要,这是一整代的不良习惯,因为大量的不了解/未曾教过/遗忘了这一点的程序员在互联网上拖来溜去。的概念object extensions