2013-11-03 6 views
5

बदलते समय से अपने बच्चे दृश्य नियंत्रक को रिलाउट नहीं करता है, मैं निम्नलिखित दृश्य नियंत्रक (वीसी) संरचना बना रहा हूं।UIPavigationController पर UIPageViewController अभिविन्यास

[UINavigationViewController] -> [UIPageViewController] -> [UIViewControllers]

तो, इस कुलपति और आड़े ओरिएंटेशन का समर्थन करना चाहिए।

किसी भी पक्ष में ओरिएंटेशन बदलने पर मुझे एक समस्या है।

enter image description here

आप समस्या देख सकते हैं। enter image description here

लाल क्षेत्र बच्चे कुलपति UIPageViewController पर की पृष्ठभूमि का रंग है।
नीला क्षेत्र UIPageViewController का पृष्ठभूमि रंग है।

मुझे लगता है कि बच्चे वीसी को UIPageViewController द्वारा रिलाउट नहीं किया गया था। मैंने इसे लंबे समय से समझ लिया है। आखिर में निम्नलिखित ओवरराइड फ़ंक्शन को कस्टम UIPageViewController में जोड़ने के लिए एक कार्य खोजने के लिए अंत में काम करना समाप्त हो गया।

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    [self setViewControllers:self.viewControllers 
        direction:UIPageViewControllerNavigationDirectionForward 
        animated:NO 
        completion:NULL]; 
} 

हालांकि डाउनसाइड पर एक दृश्य को स्थानांतरित करना जल्द ही घूर्णन को समाप्त करने के रूप में दिखाया गया है। यह कोड मोटे तौर पर समस्या हल करता है।

वैसे भी, मैं वास्तव में किसी भी अच्छे और प्राकृतिक समाधान जानना चाहता हूं।

अद्यतन
मेरा ऐप iOS6 पर अच्छी तरह से काम करता है। यह आईओएस 7 बग हो सकता है?

+0

आपने अलग-अलग अभिविन्यास के लिए 2 अलग-अलग xib बनाया है? –

+0

जब मैंने अभिभावक दृश्य नियंत्रक के बाहर एक पृष्ठ दृश्य नियंत्रक का उपयोग किया था (जैसा कि आप कर रहे हैं) मैं लेआउट समस्याओं में भाग गया। जब मैं पृष्ठ दृश्य नियंत्रक को मूल दृश्य नियंत्रक में जोड़ता हूं तो वे समस्याएं गायब हो जाती हैं। मैंने एप्पल के पेज-आधारित एप्लिकेशन एक्सकोड टेम्पलेट से बॉयलरप्लेट कोड का उपयोग किया। – bilobatum

+0

@MirkoCatalano सं। कस्टम UIPageViewController प्रोग्रामेटिक रूप से बनाया गया है, लेकिन UINavigationController ऐप का rootViewController है। मैं UI बनाने के लिए एक स्टोरीबोर्ड का उपयोग करता हूं। UIPageViewController के लिए मैंने स्टोरीबोर्ड का उपयोग नहीं करने का कारण कस्टम UITableViewCell पर एक बटन से बातचीत करना है। मैंने बटन बनाने के लिए स्टोरीबोर्ड का उपयोग नहीं किया क्योंकि बटन रनटाइम पर गतिशील रूप से बनाया गया है। –

उत्तर

10

मैंने कस्टम UIPageViewController के [viewDidLoaded] में कोड की निम्न पंक्ति रेखा को रखने के लिए इस समस्या को हल किया है।

self.automaticallyAdjustsScrollViewInsets = NO; 

मैं माना UIPageViewController एक स्क्रॉल दृश्य है, और अगर यह UINavigationController में अंतर्निहित है, यह अभिविन्यास बदले के बाद से गलत तरीके से बाहर रखना होगा।

सौभाग्य से, मेरा समाधान समस्या में फिट हुआ।

@MirkoCatalano आपकी टिप्पणियों के लिए धन्यवाद। सही समाधान खोजने के लिए ये बहुत उपयोगी हैं।

+0

धन्यवाद। तुमने मुझे बचाया। मैं इस पर तीन दिनों के लिए अटक गया था। काश मैं आपको अधिक अपवर्त दे सकता हूं। – Greeso

+0

@Greeso यह मेरी खुशी है। आपके द्वारा खर्च किए गए समय के दौरान मुझे उस मुद्दे से भी पीड़ित था। मैं वास्तव में खुश हूं जैसे आप हैं। –

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