2013-03-26 6 views
5

घूर्णन के बाद मॉडल गायब हो रहा है मुझे एक अजीब समस्या UISplitViewController है। मेरे पास मेरे मास्टर व्यू कंट्रोलर में एक बटन है जो टैप किए जाने पर एक मोडल व्यू खोलता है (एक साधारण स्टोरीबोर्ड सेग्यू का उपयोग करके)।UISplitViewController

लेकिन जब मैं आईपैड घुमाता हूं तो मोडल दृश्य गायब हो जाता है, लेकिन केवल पोर्ट्रेट से परिदृश्य तक घूमते समय। मेरे मास्टर व्यू कंट्रोलर को मूल मेल एप्लिकेशन की तरह पोर्ट्रेट में छुपाया गया है।

यदि मैं परिदृश्य में हूं (जब मास्टर हमेशा दिखाई देता है) और मेरा मोडल खोलें, डिवाइस को घूर्णन करना सही ढंग से काम करता है और मेरा मोडल स्क्रीन पर रहता है।

मैंने स्प्लिट व्यू कंट्रोलर पर performSegueWithIdentifier: पर कॉल करने के लिए मैन्युअल रूप से segue को ट्रिगर करने का प्रयास किया, घूर्णन दोनों तरीकों से काम करता है। लेकिन मैं सोच रहा था कि यह एक आसान तरीके से तय किया जा सकता है क्योंकि मेरे पास मास्टर व्यू कंट्रोलर में मोडल्स प्रदर्शित करने वाले अन्य बटन हैं और मैं प्रत्येक के लिए आईबी एक्शन नहीं करना चाहता हूं और स्टोरीबोर्ड सेग के फायदे खोना चाहता हूं।

उत्तर

1

दुर्भाग्य से ऐसा लगता है, जब आपका आईपैड पोर्ट्रेट मोड पर है, तो आपके पास अपने मास्टर का पॉपओवर है, यह किसी अन्य आकार में मास्टर नहीं है। क्या मतलब है कि आप presentingViewController के रूप में इस पॉपओवर का उपयोग कर एक मॉडल प्रस्तुत कर रहे हैं, इसलिए जब आप चित्र से परिदृश्य में ले जाएँ विधि splitViewController:willShowViewController अपने पॉपओवर शून्य कर देगा जैसा कि आप देख सकते हैं:

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
    // Called when the view is shown again in the split view, invalidating the button and popover controller. 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
    self.masterPopoverController = nil; 
} 

तो मैं समझता हूँ कि स्वीकार्य है कि आपके मोडल इसके साथ जा रहा है। तो, इसके साथ आप समझते हैं कि जब आप अपनी कार्रवाई को अपने विभाजन पर performSegueWithIdentifier: पर कॉल करते हैं तो ऐसा नहीं होता है, आपका मोडल अब आपके पॉपओवर से कनेक्ट नहीं है।

तो आप पूछ सकते हैं कि जब आप परिदृश्य से चित्र में जाते हैं तो ऐसा क्यों नहीं होता .. और कारण splitViewController:willHideViewController है, यह दृश्य को छुपाता है नियंत्रक इसे हटा नहीं देता है, इसलिए आपका मोडल हमेशा कनेक्ट होता है।

तो, दुर्भाग्य से कोई समाधान नहीं है और आप .. कोड द्वारा कार्रवाई करने के लिए

मुझे आशा है कि यह मदद करता है,

रॉबर्टो

होगा
संबंधित मुद्दे