2015-02-04 24 views
5

मैं इस तरह मेरी ViewController वर्ग से एक वर्ग समारोह बोल रहा हूँ:अन्य वर्ग से IBOutlet एक्सेस करना

Buttons.set_cornerRadius(10) 

मैं एक .swift फ़ाइल जहाँ मैं कार्य हो है की घोषणा की:

class Buttons { 

     class func set_cornerRadius(radius: CGFloat) { 
      ViewController().someButton.layer.cornerRadius = radius 
     } 
} 

जब मैं मैं इसे चलाने की कोशिश कर रहा हूं यह त्रुटि फेंकता है: "Unexpectedly found nil while unwrapping an optional Value"

मैंने स्टोरीबोर्ड-आईबीओलेट कनेक्शन पहले से ही चेक किया है। सब ठीक से जुड़ा हुआ है।
अगर मैं इस तरह एक ही कक्षा में विधि कॉल, सब कुछ काम करता है:

class ViewController: UIViewController { 

    @IBOutlet weak var someButton: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     set_cornerRadius(10) 
    } 

    func set_cornerRadius(radius: CGFloat) { 
     someButton.layer.cornerRadius = radius 
    } 
} 

कैसे मैं इसे ठीक कर सकते हैं? मैं गलत क्या कर रहा/सही समझ नहीं रहा हूं?

अग्रिम धन्यवाद।

+1

आपको 'व्यू कंट्रोलर' के वास्तविक उदाहरण तक पहुंचने की आवश्यकता है और कुछ सामान्य तत्काल – Ian

+0

नहीं क्या आप मुझे कुछ उदाहरण दे सकते हैं कि यह कैसे करें? – smnk

+0

क्यों न केवल अपने ViewController में कोने त्रिज्या सेट करें? – Ian

उत्तर

4

आप एक सामान्य ViewController तक पहुंचते हैं, लेकिन मौजूदा UIView का उपयोग करने की आवश्यकता है। कुछ इस तरह है:

class Test: UIViewController { 

    class func set_cornerRadius(yourView: UIView, radius: CGFloat) { 
     yourView.layer.cornerRadius = radius 
    } 
} 

इस तरह, आप पारित UIView आप कोने-त्रिज्या सेट करना चाहते हैं।

+0

मैं इसे आजमाने जा रहा हूं! :) – smnk

+0

यदि मैं क्लास func set_cornerRadius (yourView: ViewController, त्रिज्या CGFloat) {कुछ कोड} का उपयोग करता हूं और इसे set_cornerRadius (self, 10) – smnk

2

तुम इतनी तरह अपने ViewController वर्ग का विस्तार: अपने viewDidLoad या जहां भी आप चाहते में set_cornerRadius(someValue):

extension ViewController { 
    func set_cornerRadius(radius: CGFloat) { 
     someButton.layer.cornerRadius = radius 
    } 
} 

अब आप इस विधि अपने मूल ViewController फ़ाइल में का उपयोग कर कॉल कर सकते हैं। आप इस एक्सटेंशन को एक अलग फ़ाइल में डाल सकते हैं।

+0

के साथ कॉल करता हूं तो यह काम करता है यह सही है! शुक्रिया जनाब! – smnk

संबंधित मुद्दे