2010-05-09 10 views
6

मुझे पुस्तकालयों के साथ काम करने में कुछ परेशानी हो रही है और xib फ़ाइलों को शामिल किया गया है। मुझे अपनी स्थिति को पहले समझाएं। मेरे पास एक प्रोजेक्ट है जो बहुत अच्छा चल रहा है। अब मुझे अपने प्रोजेक्ट का एक हिस्सा किसी अन्य ग्राहक के लिए लाइब्रेरी के रूप में चाहिए जो अपने ऐप में कुछ कार्यक्षमता का उपयोग करना चाहता है। मैंने that की अत्यधिक अनुशंसित लेख की सहायता से लाइब्रेरी बनाई है।पुस्तकालयों में xib फ़ाइलों का उपयोग करने में समस्या

मेरे ग्राहक इस तरह की एक मुख्य दृश्य नियंत्रक प्रारंभ करने में सक्षम होना चाहिए:

LibraryMainViewController *lmvc = [[LibraryMainViewController alloc] initWithNibName:@"LibraryMainViewController.xib" bundle:foo]; 

एक त्रुटि के लिए सुनिश्चित सुराग के लिए जब मैं उस दृश्य नियंत्रक रुप से पेश करने के लिए प्रयास करें। मुझे यकीन नहीं है कि मुझे यहां किस बंडल का उपयोग करना है। मैंने

[NSBundle bundleForClass:[SomeClassInTheLibrary class]]; 

जैसी कुछ कोशिश की लेकिन इससे समस्या हल नहीं हुई।

मुझे खुशी होगी अगर कोई मुझे बता सके कि वास्तव में उस तरह की स्थिति में xib फ़ाइल का उपयोग कैसे करें।

धन्यवाद
-f

अद्यतन

ठीक है, मुझे लगता है मैं गलत यह किसी भी तरह मिल गया है देखते हैं। सिर्फ स्पष्टीकरण के लिए: मुझे लाइब्रेरी, हेडर और अतिरिक्त संसाधनों की क्या ज़रूरत है, है ना? क्या उपर्युक्त सभी हिस्सों के साथ "एक सुविधा" बनाने और शिपिंग के लिए कुछ बेहतरीन अभ्यास है?

उत्तर

6

स्टेटिक पुस्तकालयों ग्राफिक्स, लगता है, xibs या यहाँ तक कि शीर्षकों को शामिल नहीं कर सकते हैं। केवल ऑब्जेक्ट कोड। यहां तक ​​कि यदि आपने प्रतिलिपि बंडल संसाधनों में xibs जोड़े हैं, तो वे ऑब्जेक्ट फ़ाइल का हिस्सा नहीं बनेंगे। दुर्भाग्य से, आप आईफोन पर गतिशील पुस्तकालयों या ढांचे का उपयोग नहीं कर सकते हैं। एक अलग संपत्ति बंडल बनाने के सुझाव के लिए my answer here देखें। आप अपने ग्राहक को xib फ़ाइलों को अलग से भेज सकते हैं, लेकिन फिर भविष्य में बदलते समय उन्हें उन्हें हाथ से बदलना होगा।

+0

तो अगर मैंने ऐसा किया तो मुझे अपने ग्राहक को लाइब्रेरी, हेडर और बंडल को xib फाइलों के साथ सौंपना पड़ा, है ना? – flohei

+0

हां बिल्कुल। उदाहरण के लिए फेसबुक ऐसा करता है। (आप मुझसे जुड़े प्रश्न में दिए गए लिंक का अनुसरण कर सकते हैं।) – Felixyz

0

XIB फ़ाइल में एक्सटेंशन को जोड़ने के बिना प्रयास करें। यही वह तरीका है जो मैं आमतौर पर करता हूं। मैं भी यकीन है कि अगर XIB एक निब को संकलित किया जाना चाहिए नहीं कर रहा हूँ ..

NSBundle *bundle = [NSBundle bundleForClass:[SomeClassInTheLibrary class]]; 
LibraryMainViewController *lmvc = [[LibraryMainViewController alloc] initWithNibName:@"LibraryMainViewController" bundle:bundle]; 
+0

जब मैं कोशिश करता हूं कि मुझे अभी भी एक त्रुटि मिल रही है 2010-05-09 12: 18: 23.099 परीक्षण [6416: 207] *** बिना अपवाद अपवाद के कारण ऐप को समाप्त करना 'एनएसआईएनवालिडअर्गमेंट एक्सेप्शन', कारण: '- [UIViewController _loadViewFromNibNamed: बंडल:] "लाइब्रेरीमेन व्यू कंट्रोलर" नामक एक निब लोड करने में असमर्थ था, क्या यह संभव है कि मैंने xib फ़ाइल को उस लाइब्रेरी में सही तरीके से नहीं जोड़ा? मैंने इसे "कॉपी बंडल रिसोर्सेज बिल्ड फेज" में जोड़ा। – flohei

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