Herkesin etiketleri kullan demesini takdir ediyorum, ancak gerçekten UIButton sınıfını genişletmeniz ve nesneyi oraya eklemeniz gerekiyor ..
Etiketler bu konuda umutsuz bir yoldur. UIB düğmesini bu şekilde uzatın (Swift 4'te)
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)
}
}
aramanız çağrı olabilir (iki nokta üst üste ":" de NOT 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"
sonra sonunda hepsini burada yakalayın
@IBAction func webButtonTouched(_ sender: PassableUIButton) {
print(sender.params["myvalue"] ?? "")
}
Bunu bir kez yaparsınız ve projeniz boyunca kullanırsınız (alt sınıfın genel bir "nesnesine" sahip olmasını bile sağlayabilir ve istediğinizi butona koyabilirsiniz!). Veya düğmeye tükenmez sayıda anahtar / dize parametresi eklemek için yukarıdaki örneği kullanın. URL'ler, mesaj metodolojisini onaylama vb. Gibi şeyleri dahil etmek için gerçekten kullanışlıdır.
Bir kenara, SO
topluluğun, anlamayan / öğretilmemiş / ana fikri kaçıran endişe verici sayıda programcı tarafından internette kesilip yapıştırılan koca bir nesil kötü uygulama olduğunu fark etmesi önemlidir . kavramıobject extensions