2010-12-28 8 views
6

मैं एक "ब्लैकबॉक्स" लाइब्रेरी लिख रहा हूं। इस लाइब्रेरी में मुझे अपनी लाइब्रेरी का उपयोग करने वाले किसी ऐप में एक सबव्यू जोड़ना होगा।
इसलिए, मेरे पास ऐपडिलेगेट और न ही एप्लिकेशन के UIWindow के लिए कोई संदर्भ नहीं है।
केवल एक चीज बाहरी एप्लिकेशन अब क्या कर रहा है निम्नलिखित है:
ऐप ऑब्जेक्ट्स को पकड़े बिना वर्तमान सक्रिय UIWindow/appDelegate ऑब्जेक्ट प्राप्त करना

myRec = [[Rec alloc] init]; 
myRec.delegate = self; 
[myRec start]; 

जहां Rec ब्लैकबॉक्स पुस्तकालय है और myRec उदाहरण है कि एक बाहरी एप्लिकेशन द्वारा प्रयोग किया जाता है है।
बेशक, मुझे प्रतिनिधि सदस्य के माध्यम से ऐप के दृश्य का कोई संदर्भ नहीं मिल सकता है क्योंकि इसे बाहरी ऐप के विशिष्ट प्रकार की तरह परिभाषित नहीं किया गया है।

UIWindow ऑब्जेक्ट/एप डिलीगेट ऑब्जेक्ट पर किसी भी विचार को प्राप्त करने के बारे में कोई विचार बिना उनकी पहचान अग्रिम में ??

धन्यवाद !!

उत्तर

20

अनुप्रयोग प्रतिनिधि हो रही है:

id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate]; 

UIWindow वस्तु हो रही है:

UIWindow* window = [[UIApplication sharedApplication] keyWindow]; 
+0

धन्यवाद! अछा लगता है ! – Guys

+0

धन्यवाद !!! आकर्षण की तरह काम !! –

1
[[UIApplication sharedApplication] delegate] 

हमेशा रिटर्न करेंगे कुछ id<UIApplicationDelegate>

Btw के अनुरूप, यह कर यह, एक प्रोटोकॉल है कि आपके आवेदन में कुछ वर्ग (यानी AppDelegate) के अनुरूप माना जाता है बनाने की उचित तरीके से और उस कक्षा को अपनी पुस्तकालय में पास करें। आप लाइब्रेरी जांच सकते हैं कि कक्षा प्रोटोकॉल के अनुरूप है और अगर लॉग में किसी संदेश के साथ विफल हो जाती है।

0

@ phix23 उसके जवाब स्विफ्ट 3 में:

if let appDelegate = UIApplication.shared.delegate, let window = appDelegate.window { 
    let yourview = window?.rootViewController?.view 
} 
संबंधित मुद्दे