iphone - iOS: AutoRotating between NIBs -


मेरा सार्वभौमिक ऐप एक पूर्ण स्क्रीन दृश्य है एक सेटिंग पृष्ठ प्रकट करने के लिए एक बटन फ़्लिप करने के लिए दबाएं:

  - (शून्य) शो सेटिंग्स {flipsideViewController * flipsideVC = [FlipsideViewController alloc]; NSString * settingsNib; अगर (आईआईपीडी ()) सेटिंग्सनईब = है वर्तमान में पोर्ट्रेट ()? @ "Settings_iPad_portrait": @ "settings_iPad_landscape"; Else settingsNib = @ "settings_iPhone"; [FlipsideVC initWithNibName: settingsNib बंडल: शून्य]; FlipsideVC.delegatePointingToMainVC = स्व; FlipsideVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [आत्म वर्तमान मॉडेल दृश्य नियंत्रक: flipsideVC एनिमेटेड: हाँ]; [FlipsideVC रिलीज]; }  

और सेटिंग्स पेज प्रतिनिधि विधि को आह्वान करता है: मैं परिवर्तित सेटिंग्स की रोशनी में मुख्य दृश्य विश्राम, और वापस फ्लिप।

  - (शून्य ) सेटिंग्सडिड्यूइट: (फ्लिपसाइडव्यूकंट्रोलर *) फ्लिपसाइडेविआसी {[मैन्युअल बनाएंऑनआरएकेआरवैल वीज]; [स्व से हटाएंमॉडल विज नियंत्रकअनुमति: हाँ]; }  

लेकिन क्या होगा अगर उपयोगकर्ता सेटिंग पृष्ठ पर iPad को घुमाएंगे? ऐप्पल ने फैसला सुनाया कि मेरे ऐप को इसे संभालना चाहिए लेकिन यह कैसे करना है? क्या मैं गतिशील रूप से सेटिंग्स पेज के लिए एक नया XIB लोड कर सकता हूँ?

मुझे ऐसा करने का कोई तरीका नहीं दिखाई दे रहा है, इसलिए मेरा प्रयास समाधान सेटिंग्स दृश्य में रोटेशन को पकड़ना है ...

  - (शून्य) didRotateFromInterfaceOrientation : (UIInterfaceOrientation) पुराने इंटरफ़ेसऑरियन्टेशन {[स्वयं। DelegatePointingToMainVC सेटिंग्सऑरेंटेशन चेंजेड]; }  

... और मुख्य व्यू नियंत्रक को वापस कॉल करें, जो सेटिंग्स दृश्य नियंत्रक को घुलित करता है और इसे वर्तमान अभिविन्यास के प्रकाश में पुन: बनाता है।

  - (शून्य) सेटिंग्सऑरियन्टेशन परिवर्तित [[स्व से हटाएंमॉडल विज नियंत्रकअनुमति: हाँ]; [स्वयं शो सेटिंग्स]; }  

एक तुच्छ समस्या अभी दूर है - didRotateFromInterfaceOrentation स्वचालित रूप से ट्रिगर हो जाता है जब सेटिंग्स पृष्ठ लोड होता है। मैं इनुइट में एक बूलियन को गलत रूप में सेट करके और इसे संशोधित कर सकता हूं:

  - (शून्य) किया थारोेटफ़ॉर्म इन्टरफेक्शन: (यूआईएनपरफेसऑरिएन्टेशन) पुराना इंटरफ़ेसऑरेंटेशन {अगर (आरंभीकृत) [आत्म.डिलागेटपॉईंटिंगटौमेनईवीसी सेटिंग्सऑरेंटेशन चेंजेड]; Initialized = true; }  

इस दृष्टिकोण के साथ समस्या यह है कि मैं सेटिंग पृष्ठ पर नेविगेट करता हूं, उपकरण को घुमाएगा, और यह क्षणिक रूप से अपने मुख्य दृश्य पर वापस जाने से पहले, सही सेटिंग्स पृष्ठ दिखाता है।

मुझे लगता है कि यहां एक थ्रेडिंग समस्या है लेकिन शायद मेरा पूरा दृष्टिकोण गलत है क्या कोई बेहतर उपाय सुझा सकता है?

मुझे यकीन नहीं है कि मैं समस्या को समझता हूं। क्या आप चाहते हैं कि सेटिंग्स दृश्य (एनआईबी से लोड) को ऑटोरोटेट करना चाहते हैं? आपको बस उस अभिविन्यास के लिए हां वापस लौटना चाहिए जो आप चाहते हैं कि shouldAutorotateToInterfaceOrientation: में ऑटोरोटेशन करना चाहिए और अपनी जरूरतों के हिसाब से XIB के अंदर के विचारों का ऑटोोरोजिंग मुखौटा सेट करें।

मुख्य व्यू नियंत्रक को वापस कॉल करने की आवश्यकता नहीं है और उसे एक नई सेटिंग्स दृश्य नियंत्रक को पुश करने के लिए कहें। विचारों के रोटेशन व्यवहार को प्रत्येक दृश्य के ऑटोोरिसिज़िंग मुखौटा गुणों और shouldAutorotateToInterfaceOrientation: के संबंधित दृश्य नियंत्रक की विधि और इसके कार्यान्वयन से निर्धारित किया जाता है। यदि अधिक उन्नत एनिमेशन करना चाहते हैं, हालांकि, आप willRotateToInterfaceOrientation: अवधि: और didRotateFromInterfaceOrientation: विधियों में उन्हें सेट अप और प्रबंधित कर सकते हैं।


Comments