Saya menghargai semua orang yang mengatakan gunakan tag, tetapi Anda benar-benar perlu memperluas kelas UIButton dan cukup menambahkan objek di sana ..
Tag adalah cara putus asa untuk ini. Perpanjang UIButton seperti ini (di 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)
}
}
maka panggilan Anda mungkin dipanggil (CATATAN titik dua ":" di 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"
lalu akhirnya tangkap semuanya di sini
@IBAction func webButtonTouched(_ sender: PassableUIButton) {
print(sender.params["myvalue"] ?? "")
}
Anda melakukan ini satu kali dan menggunakannya di seluruh proyek Anda (Anda bahkan dapat membuat kelas anak memiliki "objek" generik dan memasukkan apa pun yang Anda suka ke dalam tombol!). Atau gunakan contoh di atas untuk memasukkan jumlah parameter kunci / string yang tidak ada habisnya ke dalam tombol .. Sangat berguna untuk menyertakan hal-hal seperti url, metodologi konfirmasi pesan, dll.
Selain itu, penting bagi SO
komunitas untuk menyadari bahwa ada seluruh generasi praktik buruk yang dipotong-potong di internet oleh sejumlah programer yang tidak mengerti / belum diajarkan / melewatkan inti dari konsepobject extensions