2013-07-10 4 views
6

में स्थिर लाइब्रेरी में xib फ़ाइल को जोड़ने के लिए कैसे मैं स्थिर पुस्तकालय के भीतर xib फ़ाइल या कोई अन्य दृश्य नियंत्रक फ़ाइल जोड़ने की कोशिश कर रहा हूं लेकिन मैं ऐसा नहीं कर सकता। क्या आप मेरी मदद कर सकते हैं?आईओएस

यदि संभव हो तो कृपया पूरे स्रोत कोड

अपने पहले दृश्य पर बटन है जोड़ें। और उस बटन पर क्लिक करते समय, नया दृश्य नियंत्रक कुछ के साथ आता है (आइए पृष्ठभूमि रंग में परिवर्तन कहें)। इसके लिए स्थैतिक पुस्तकालय कैसे बनाएं? ताकि मैं इसे किसी अन्य प्रोजेक्ट में उपयोग कर सकूं?

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

+0

http://stackoverflow.com/questions/6859143/whether-nib-xib-files-can-be-added-to-a-static-library यह आप मदद कर सकते हैं इस का एक नजर है। –

+0

जब हम स्थैतिक पुस्तकालय बनाते हैं, तो यह .h और .m फ़ाइलों को देता है जिसमें हमें कोड लिखने की आवश्यकता होती है। हां, हम आसानी से फाइबोनैकी फ़ंक्शन लिख सकते हैं। अगर मैं पहले दृश्य में टेबल व्यू चाहता हूं तो क्या होगा। क्योंकि मेरे पास कोई xib फ़ाइल नहीं है। मैं एक समारोह बना सकता हूं और प्रोग्रामवेटिक रूप से टेबलव्यू बना सकता हूं। और यदि हम किसी भी सेल का चयन करते हैं, तो नया दृश्य नियंत्रक आने की आवश्यकता है। कृपया आप इसके साथ मार्गदर्शन कर सकते हैं। –

उत्तर

4

कड़ाई से बोलते हुए, यह सही है आप एक स्थिर पुस्तकालय में एक Xib नहीं जोड़ सकते हैं। हालांकि, कामकाज हैं। संसाधन ट्यूटोरियल के साथ मैट गैलोवे की आईओएस लाइब्रेरी आपको दिखाएगी कि यह कैसे करना है।

iOS Library With Resources देखें।

+0

पहले से ही इस उदाहरण के साथ प्रयास किया है लेकिन ऐसा नहीं कर सका ... –

+0

यह निश्चित रूप से काम करता है हालांकि मूल परियोजना में बंडल प्राप्त करने के लिए अतिरिक्त कदम उठाए जा सकते हैं। मुझे जांचना होगा ... –

+0

यदि संभव हो तो आप मुझे पुस्तकालय बनाने के लिए चरणों को भेज सकते हैं .h और .m फ़ाइल में xib फ़ाइल को –

0

XIB संसाधन और क्या स्थिर पुस्तकालय है, कि उर कक्षाओं में शामिल है एक संकलित फ़ाइल की तरह है। आप कह सकते हैं कि यह आपके संकलित कोड का उपयोग करने के लिए तैयार है। आप xib की स्थिर लाइब्रेरी में नहीं जोड़ सकते हैं।

+0

हाय, हम xib फ़ाइल नहीं जोड़ सकते हैं। लेकिन हां हम यूकिट फ्रेमवर्क में यूकिट लाइब्रेरी से बटन, या कोई अन्य ऑब्जेक्ट जोड़ सकते हैं। लेकिन मेरा सवाल यह है कि स्थैतिक पुस्तकालय –

+0

में एक दृश्य नियंत्रक से दूसरे में नेविगेट करने का तरीका है, मैं आपको प्राप्त नहीं करता हूं, स्थिर लाइब्रेरी के लिए नेविगेशन कोड वही होगा जो हम आम तौर पर उपयोग करते हैं .. एक सलाह यदि आप अपनी लाइब्रेरी में यूआई का उपयोग करना चाहते हैं तो Viewcontrollers का उपयोग करने के बजाय सबव्यूव का उपयोग करें ... – BhushanVU

+0

ठीक है अब मैं सबव्यू –

6

यदि आप स्थिर लाइब्रेरी का निर्माण करते समय इंटरफ़ेस बिल्डर का उपयोग करके अपने इंटरफेस बनाना चाहते हैं तो आपको एक बंडल बनाना होगा और इसे अपनी लाइब्रेरी से वितरित करना होगा।

Xcode में:

  1. फ़ाइल> नया> लक्षित करें
  2. का चयन करें "बंडल" ओएस एक्स फ्रेमवर्क और पुस्तकालय अनुभाग
  3. विवरण भरें से। बंडल ढांचा मूल नींव होना चाहिए।

फिर आपको अपने ढांचे के रूप में एक ही समय में संकलित बंडल प्राप्त करने की आवश्यकता है। अपने ढांचे के "लक्ष्य निर्भरता" निर्माण चरण में बंडल जोड़ें।

जब आप अपनी xibs बनाते हैं तो आप अपना नया बंडल बनाते हैं।

फिर जब आप व्युत्पन्न डेटा निर्देशिका में अपना ढांचा संकलित करते हैं, तो आपके ढांचे के बिनरी के बगल में आपको अपना संकलित बंडल मिलेगा। आप फ्रेमवर्क बाइनरी के साथ अपने तीसरे पक्ष को यह देते हैं।

तो आप अपने कोड में इस बंडल का संदर्भ कैसे देते हैं? आईओएस बंडलों में लोड नहीं किया जा सकता है और आपका बंडल वास्तव में तीसरे पक्ष के आईओएस एप्लिकेशन मुख्य बंडल के अंदर होगा। आप आसानी से अपने कोड से अपने बंडल तक पहुँचने के लिए NSBundle पर एक वर्ग बना सकते हैं:

@interface NSBundle (mybundle) 
+(NSBundle *)myBundle; 
@end 

@implementation NSBundle (mybundle) 

static NSBundle * _myBundle; 

+(NSBundle *)myBundle{ 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 

     NSBundle * mainBundle = [NSBundle mainBundle]; 
     NSString * pathToMyBundle = [mainBundle pathForResource:@"myBundle" ofType:@"bundle"]; 

     NSAssert(pathToMyBundle, @"bundle not found", nil); 

     _myBundle = [NSBundle bundleWithPath:pathToMyBundle]; 
    }); 

    return _myBundle; 
} 

फिर आप कोड में अपने बंडल का उपयोग कर सकते इस तरह xibs लोड करने के लिए:

UIViewController * controller = [[UIViewController alloc] initWithNibName:nil bundle:[NSBundle myBundle]]; 

याद रखें कि यदि आप श्रेणियों का उपयोग आपके ढांचे कोड में आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपके ढांचे के उपभोक्ता -ObjC (या -all_load हालिया एक्सकोड का उपयोग नहीं करते हैं) "अन्य लिंकर ध्वज" अपनी परियोजनाओं में

+1

ओएमजी - यह विजेता था। यह एक्सकोड 7 में भी मेरे लिए काम करता है। पुराने पुराने ट्यूटोरियल में से कई लक्ष्य निर्भरता के रूप में बंडल जोड़ने का कदम याद करते हैं। धन्यवाद! – drudru