मैं सभी को टैग का उपयोग करते हुए कह रहा हूँ, लेकिन वास्तव में आपको UIButton वर्ग का विस्तार करने की आवश्यकता है और बस वहाँ की वस्तु को जोड़ना चाहिए ।।
टैग इस तरह से एक निराशाजनक तरीका है। इस तरह UIButton बढ़ाएँ (स्विफ्ट 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"] ?? "")
}
आप इसे एक बार करते हैं और अपने पूरे प्रोजेक्ट में इसका उपयोग करते हैं (आप चाइल्ड क्लास को एक सामान्य "ऑब्जेक्ट" भी बना सकते हैं और जो कुछ भी आपको पसंद है उसे बटन में डाल सकते हैं!)। या बटन में कुंजी / स्ट्रिंग परम की एक अटूट संख्या डालने के लिए ऊपर दिए गए उदाहरण का उपयोग करें .. वास्तव में उपयोगी चीजें जैसे कि यूआरएल, पुष्टि संदेश पद्धति आदि के लिए।
एक तरफ के रूप में, यह महत्वपूर्ण है कि SO
समुदाय को यह एहसास हो कि बुरी प्रथा की पूरी पीढ़ी में कटौती की जा रही है। प्रोग्रामर की एक खतरनाक संख्या के आधार पर इंटरनेट को गोल किया जाता है, जो समझ में नहीं आता / सिखाया नहीं गया / याद नहीं किया गया इसकी अवधारणाobject extensions