2012-09-25 28 views
7

Minimal Deployment Target आईओएस 5.0 पर सेट किए गए ऐप में आईओएस 6 की विशेषताओं का समर्थन कैसे कर सकता है?आईओएस 5 ऐप में आईओएस 6 फीचर्स का सशर्त समर्थन

उदाहरण के लिए, यदि उपयोगकर्ता के पास आईओएस 5 है तो उसे एक UIActionSheet दिखाई देगा, यदि उपयोगकर्ता के पास आईओएस 6 है तो वह आईओएस 6 के लिए एक अलग UIActionSheet देखेंगे? आप यह कैसे करते हैं? मेरे पास एक्सकोड 4.5 है और आईओएस 5 पर चल रहा एक ऐप चाहिए।

उत्तर

19

आपको हमेशा आईओएस संस्करणों के बजाय उपलब्ध विधियों/फीचर का पता लगाना चाहिए और फिर एक विधि मानना ​​चाहिए।

Apple documentation देखें।

उदाहरण के लिए, iOS 5 में एक मॉडल दृश्य नियंत्रक हम कुछ इस तरह करना होगा प्रदर्शित करने के लिए:

[self presentModalViewController:viewController animated:YES]; 

iOS 6 में, UIViewController की presentModalViewController:animated: विधि पदावनत है, तो आप iOS 6 में presentViewController:animated:completion: का उपयोग करना चाहिए, लेकिन आप कैसे जानते हैं कि कब उपयोग करें?

आप आईओएस संस्करण का पता लगा सकते हैं और अगर आप पूर्व या बाद में उपयोग करते हैं तो एक कथन कथन है, लेकिन यह नाजुक है, आप एक गलती करेंगे, शायद भविष्य में एक नया ओएस ऐसा करने का एक नया तरीका होगा ।

इस संभाल करने के लिए सही तरीका है:

if([self respondsToSelector:@selector(presentViewController:animated:completion:)]) 
    [self presentViewController:viewController animated:YES completion:^{/* done */}]; 
else 
    [self presentModalViewController:viewController animated:YES]; 

तुम भी तर्क है कि आप और अधिक सख्त होना चाहिए और की तरह कुछ कर सकता है:

if([self respondsToSelector:@selector(presentViewController:animated:completion:)]) 
    [self presentViewController:viewController animated:YES completion:^{/* done */}]; 
else if([self respondsToSelector:@selector(presentViewController:animated:)]) 
    [self presentModalViewController:viewController animated:YES]; 
else 
    NSLog(@"Oooops, what system is this !!! - should never see this !"); 

मैं अपने UIActionSheet उदाहरण के बारे में अनिश्चित हूँ, जहां तक ​​मुझे पता है कि यह आईओएस 5 और 6 पर समान है। हो सकता है कि आप UIActivityViewController साझा करने के लिए सोच रहे हों और यदि आप आईओएस 5 पर हैं तो आप UIActionSheet पर फ़ॉलबैक करना चाहेंगे, तो हो सकता है कि आप कक्षा की जांच कर सकें उपलब्ध,देखें 0 ऐसा कैसे करें।

+1

मदद के लिए धन्यवाद! एक बहुत बड़ा जवाब! –

+0

about.me प्रशंसाओं के लिए एक खुशी और धन्यवाद – Daniel

+0

आप प्रोजेक्ट सेटिंग्स में ढांचे से लिंक कर सकते हैं, इस तरह के मामले में कि फ्रेमवर्क सभी संस्करणों पर मौजूद नहीं हो सकता है, जैसे कि आपके मामले में, आप बस वैकल्पिक होने के लिए सेट करते हैं बल्कि आवश्यक है। ---- सवाल हटा दिया गया था .... प्रश्न/टिप्पणी। – Daniel