मेरे पास एक iPhone ऐप है जो UINavigationController
ड्रिल-डाउन इंटरफ़ेस पेश करने के लिए उपयोग करता है : पहला एक दृश्य, फिर दूसरा, चार स्तरों तक गहरा। मैं चाहता हूं कि पहले तीन दृश्य पोर्ट्रेट ओरिएंटेशन के लिए सीमित हों और केवल अंतिम दृश्य को परिदृश्य को घुमाने की अनुमति दी जाए। जब चौथे दृश्य से तीसरे और चौथे दृश्य की ओर लौट रहे थे तो लैंडस्केप ओरिएंटेशन में मैं चाहता था कि सब कुछ पोर्ट्रेट पर वापस आ जाए।
IOS 5 में मैंने shouldAutorotateToInterfaceOrientation:
अपने प्रत्येक दृश्य नियंत्रकों में स्वीकार्य योगों के लिए YES को वापस करने के लिए परिभाषित किया। जैसा कि दृश्य नियंत्रक # 4 से # 3 पर लौटते समय डिवाइस परिदृश्य परिदृश्य में आयोजित किया जा रहा था, भले ही चित्र में वापसी सहित, ऊपर वर्णित के रूप में काम किया गया।
IOS 6 में सभी व्यू कंट्रोलर लैंडस्केप के लिए घूमते हैं, जिन्हें तोड़कर उनका मतलब नहीं था। IOS 6 रिलीज नोट कहते हैं
अधिक जिम्मेदारी ऐप और ऐप डेलीगेट के पास जा रही है। अब, आईओएस कंटेनर (जैसे कि
UINavigationController
) अपने बच्चों को यह निर्धारित करने के लिए परामर्श नहीं करते हैं कि उन्हें ऑटोरोटेट करना चाहिए या नहीं। [...] सिस्टम शीर्ष-पूर्ण-स्क्रीन व्यू कंट्रोलर (आमतौर पर रूट व्यू कंट्रोलर) को उसके समर्थित इंटरफेस ओरिएंटेशन के लिए पूछता है जब भी डिवाइस घूमता है या जब भी कोई व्यू कंट्रोलर फुल-स्क्रीन मोडल प्रस्तुति शैली के साथ प्रस्तुत किया जाता है। इसके अलावा, समर्थित अभिविन्यास केवल तभी पुनर्प्राप्त किए जाते हैं जब यह दृश्य नियंत्रक अपनीshouldAutorotate
विधि से YES देता है । [...] यह प्रणाली निर्धारित करती है कि एप कीsupportedInterfaceOrientationsForWindow:
विधि द्वारा लौटाए गए मानsupportedInterfaceOrientations
को शीर्ष-सर्वाधिक पूर्ण-स्क्रीन नियंत्रक की विधि द्वारा लौटाए गए मूल्य को प्रतिच्छेद करके समर्थित है या नहीं ।
इसलिए मैंने उपशमन किया UINavigationController
, अपनी MainNavigationController
बूलियन संपत्ति दी landscapeOK
और इसका उपयोग अंदर की ओर उन्मुख अभिविन्यासों को वापस करने के लिए किया supportedInterfaceOrientations
। फिर मेरे प्रत्येक दृश्य में नियंत्रक 'viewWillAppear:
तरीकों में मेरे पास एक पंक्ति है
[(MainNavigationController*)[self navigationController] setLandscapeOK:YES];
मेरे बताने के लिए MainNavigationController
इच्छित व्यवहार ।
यहाँ सवाल आता है: यदि मैं अब पोर्ट्रेट मोड में अपने चौथे दृश्य पर नेविगेट करता हूं और फोन को घुमाता हूं तो यह परिदृश्य में घूमता है। अब मैं अपने तीसरे दृश्य पर वापस जाने के लिए वापस बटन दबाता हूं जो केवल पोर्ट्रेट काम करने वाला है। लेकिन यह वापस नहीं घूमता है। मैं यह कैसे कर सकता हूँ?
मैंने कोशिश की
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]
viewWillAppear
मेरे तीसरे दृश्य नियंत्रक की विधि में, लेकिन यह कुछ भी नहीं करता है। क्या यह गलत तरीका है कॉल करने के लिए या शायद गलत जगह पर कॉल करने के लिए या क्या मुझे पूरी तरह से पूरी तरह से लागू करना चाहिए?