5

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

Want to use muliple nibs for different iphone interface orientations के अनुसार मैंने प्रासंगिक तरीकों को लागू किया, और सब ठीक काम करने लगता है। दुर्भाग्य से मुझे एक UINavigationController से निपटना होगा, और प्रत्येक पृष्ठ को पोर्ट्रेट और लैंडस्केप मोड दोनों का समर्थन करना होगा, और दोनों मोड में समान कार्यक्षमताओं को पुन: पेश करना होगा। इसका अर्थ यह है कि यदि किसी बिंदु पर कोई उपयोगकर्ता चित्र से परिदृश्य में स्विच करने का निर्णय लेता है, तो पूरे ऐप को उसे अपने द्वारा चुने गए मोड में पृष्ठों के माध्यम से आगे और आगे नेविगेट करने की अनुमति देनी चाहिए।

जाहिर है कि अनुपलब्ध दस्तावेज का थोड़ा सा इस बात से निपटने का तरीका है। मेरे विचारों में मेरे पास एक संलग्न शो चाइल्ड विधि के साथ कई बटन हैं जो नेविगेशन निष्पादित करते हैं। सभी पोर्ट्रेट मोड में अच्छी तरह से काम करते हैं (यह डिफ़ॉल्ट मोड है, जहां तक ​​मैं समझता हूं)। विधि इस प्रकार है:

- (IBAction)showChild:(UITapGestureRecognizer *)sender { 
    UIView *view = [sender view]; 
    PortraitViewController *nextPortraitViewcontroller = [[PortraitViewController alloc] initWithNibName:@"Portrait" bundle:nil]; 
    [self.navigationController pushViewController:nextPortraitViewcontroller animated:YES]; 
} 

लेकिन जब लैंडस्केप मोड की बात आती है तो मुझे मिश्रित परिणाम मिलते हैं। शो चाइल्ड: लैंडस्केप व्यू कंट्रोलर क्लास में विधि बिल्कुल वही है, यह पोर्ट्रेट व्यू कंट्रोलर से शुरू होने वाला एक दृश्य बनाता है और इसे नेविगेशन नियंत्रक तक पहुंचाता है। यह सब ठीक से प्रतीत होता है लेकिन जब मैं वापस नेविगेट करता हूं तो मुझे पिछले पोर्ट्रेट व्यू कंट्रोलर को दिखाया जाता है, न कि परिदृश्य, और इसके सबव्यूज़ भी फैले हुए हैं, न कि जहां मैंने उन्हें रखा था।

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

+0

मुझे लगता है कि आप viewWillAppear में परीक्षण करना चाहते हैं: यह अभी भी उन्मुखीकरण यह था जब यह पिछले छपी – bshirley

+0

दुःख की बात है उन तरीकों जब ViewControllers धकेल दिया जाता है कहा जाता है नहीं मिलता और में है कि पहले दिखाई दृश्य नियंत्रक के एक UINavigationController में popped। मैं एक कस्टम रूटव्यू कंट्रोलर को UINavigationControllerDelegate बनने के लिए बना सकता हूं और प्रासंगिक तरीकों का उपयोग कर सकता हूं, लेकिन मुझे नहीं पता कि कैसे। – Morpheu5

+0

ठीक है, मैं एक कस्टम रूट दृश्य नियंत्रक का उपयोग करके हल किया गया है और इसे नेविगेशन नियंत्रक के प्रतिनिधि के रूप में स्थापित कर रहा हूं। दुर्भाग्य से यह काम नहीं करता है और साथ ही मुझे उम्मीद है, लेकिन मैं इसे कल देखूंगा। मुझे अब भी एक डिवाइस से जांचना है क्योंकि मैं सिम्युलेटर के साथ काम कर रहा हूं जो अभिविन्यास के बारे में बहुत क्रोधित है। – Morpheu5

उत्तर

2

मैंने यह दिखाने के लिए एक नमूना प्रोजेक्ट स्थापित किया कि मैंने अपनी समस्या को कैसे हल किया। यह शायद एकमात्र तरीका नहीं है, न ही सबसे अच्छा तरीका है, लेकिन दस्तावेज़ीकरण के कारण, या इसकी कमी, यह सबसे अच्छा है जिसके साथ मैं आया हूं।

https://github.com/Morpheu5/Rotation

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