मैं चर में पकड़ना चाहता हूं और UIButton में नए फ़ंक्शन जोड़ना चाहता हूं। मैंने विस्तार के साथ प्रयास किया है लेकिन सेट और प्राप्त करने के साथ, मैं इसे करने में सक्षम नहीं हो सका। मैंने कस्टम UIButton वर्ग बनाने की कोशिश की है, लेकिन अब, मैं xcode में अपने नए बटन वर्ग पर अपने कार्यों और चरों का उपयोग करने में सक्षम नहीं हो सकता।

मै कैसे करूँ? शुक्रिया...

class ViewController: UIViewController {
    //I want to be able to initialize MyUIButton like below
    @IBOutlet weak var button11: MyUIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        //initialize the databaseAccessor class
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let context = appDelegate.persistentContainer.viewContext
        DatabaseAccessor.shared = DatabaseAccessor(delegate: appDelegate, viewContext: context)

        // the code that I want to work is below
        button11.getLocation()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


import UIKit

@IBDesignable
class MyUIButton: UIButton {

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */
    override func awakeFromNib() {
        super.awakeFromNib()
    }

    @IBInspectable var purposeName = ""
    private var purposeIcon = ""
    private var location = 0

    func setPurposeName(name: String){
        purposeName = name
    }

    func getPurposeName()-> String{
        return purposeName
    }

    func setPurposeIcon(name: String){
        purposeIcon = name
    }

    func getPurposeIcon()-> String{
        return purposeIcon
    }

    func setLocation(location: Int){
        self.location = location
    }

    func getLocation()-> Int{
        return location
    }
}

मैंने ये किया है लेकिन उनमें से किसी ने भी काम नहीं किया है... मैं उन कार्यों का उपयोग करना चाहता हूं जिन्हें मैंने व्यू कंट्रोलर में बनाया है। पसंद

-2
eray2k 7 अक्टूबर 2018, 16:06

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपने संग्रहीत गुणों के लिए अलग-अलग सेटर्स और गेटर्स को फ़ंक्शन के रूप में नहीं लिखना चाहिए।

var purposeName = ""
func setPurposeName(name: String){
    purposeName = name
}
func getPurposeName()-> String{
    return purposeName
}

इसके बजाय, आपको इसे एक गणना की गई संपत्ति बनाना होगा, और इसके सेटर और गेटर को इस तरह कार्यान्वित करना होगा:

var _purposeName = ""
var purposeName {
    set { _purposeName = newValue }
    get { return _purposeName }
}

इसके अलावा आपके कोड में कुछ भी गलत नहीं है।

0
matt 7 अक्टूबर 2018, 16:53