2013-08-23 2 views
5

मैं एक अंधेरे थीमाधारित आईओएस 6 और 7 ऐप को बुला रहा हूं। मैं समझता हूं कि आईओएस 7 स्टेटस बार को एक अंधेरे रंग थीम एप्लिकेशन के अनुरूप बनाने के लिए मैं [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; पर कॉल कर सकता हूं।#ifdef #else #endif आईओएस एसडीके संस्करण और फ़ंक्शन का चयन करें?

समस्या मैं App स्टोर और वर्तमान में Xcode 5 कि लिए तैयार नहीं है करने के लिए अपने एप्लिकेशन प्रस्तुत करने के लिए जा रहा हूँ, इसलिए मैं Xcode 4.6.x उपयोग करने के लिए इस कार्य को क्या करना है है। हालांकि Xcode 4.6 के साथ, मैं आईओएस 7 से नया तरीका मुझे लगता है कि मैं की तरह "" यदि iOS7 "कुछ करने के लिए संकलन करने में सक्षम नहीं हूँ" तो [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; करते हैं और अपने आवेदन खिड़की का स्थान।

मैं साथ #ifdef ... #else ... इस कोड [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];viewDidLoad अंदर है यह करने के लिए कोशिश कर रहा हूँ।

किसी को भी मदद को समझने के लिए किया जा सका #ifdef का उपयोग कैसे करें ... कुछ कार्यों में विधि के साथ।

धन्यवाद एक बहुत !!!!

+1

को एक बार देख ले मैं सिर्फ यह यहाँ उत्तर दिया: http://stackoverflow.com/questions/18404746/disable-clang-error-with-pragma/18406309#18406309 – rmaddy

+0

मैं बस का समाधान मेरी समस्या। धन्यवाद – HYC

+0

मेरा दोस्त, सेब xcode संस्करण द्वारा बनाए गए किसी भी निर्माण को कम नहीं करेगा 5। इसलिए xcode 5 और बाद के संस्करणों का उपयोग करने का प्रयास करें। –

उत्तर

20

जब मैं मैं पूरी तरह से राजग के उल्लंघन के बिना इस जवाब कर सकते हैं 100% यकीन नहीं है, मैं सही दिशा में बात करने के लिए मेरी भरपूर प्रयास करेंगे।

आप Availability.h

में __IPHONE_* #defines उपयोग करने की आवश्यकता
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 
    // iOS 6+ code here 
#else 
    // Pre iOS 6 code here 
#endif 

कृपया ध्यान रखें कि #if और #ifdef का निर्धारण करेगा क्या कोड संकलित किया गया है, यह एक क्रम का पता लगाने तंत्र नहीं है।

आप आसानी से उपलब्धता में खोलें जल्दी और टाइपिंग का उपयोग करके Availability.h पहुँच सकते हैं।

+0

आपके उत्तर में कुछ भी नहीं है जो एनडीए द्वारा कवर किया गया है। आप ऐसा क्यों सोचेंगे? केवल आईओएस 7 विशिष्ट एपीआई शामिल हैं। – rmaddy

+0

निश्चित रूप से आईओएस 7 एसडीके में उपलब्ध उपलब्धता.h की सामग्री एनडीए के तहत कवर की गई है? भले ही यह जवाब आईओएस 7 के लिए हेडर फ़ाइल को देखे बिना आसानी से अनुकूलित किया जा सके। मैंने +1 किया और आपका अन्य जवाब फिर से वोट दिया :) –

2

respondsToSelector

[delegate respondsToSelector:@selector(myMethod:)] 
+3

इससे मदद नहीं मिलती है। कंपाइलर अभी भी उस लाइन पर शिकायत करेगा जो वास्तव में विधि को कॉल करता है। – rmaddy

+0

यदि रिसीवर प्रकार 'आईडी' है या आप 'प्रदर्शन चयनकर्ता: withObject:' का उपयोग नहीं करते हैं। वैसे भी, उपरोक्त विधि '# if' विधि शायद कठिन है। – jbg

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