2012-11-11 9 views
6

मैं एनीमेशन के साथ विंडो रूटव्यू कंट्रोलर को प्रतिस्थापित करने की कोशिश कर रहा हूं और यह केवल आंशिक रूप से काम करता है।एनीमेशन के साथ window.rootViewController को बदलें आंशिक रूप से

मैं प्रोग्राम के एक UINavigationController बना सकते हैं -

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"InboxStoryboard" bundle:nil]; 

UIViewController *innerViewController = [storyBoard instantiateViewControllerWithIdentifier:@"centerView"]; 
UINavigationController *centerView = [[UINavigationController alloc] initWithRootViewController:innerViewController]; 

बाद में मैं खिड़की के रूट दृश्य एक एनीमेशन ब्लॉक में लिपटे नियंत्रक की जगह -

[UIView transitionWithView:self.viewController.view.window 
        duration:0.5 
        options: UIViewAnimationOptionTransitionFlipFromLeft 
       animations:^{ 
        self.viewController.view.window.rootViewController = centerView; 
       } 
       completion:nil]; 

क्या होता है कि एनीमेशन हो लेकिन नियंत्रक है कि मैं निर्माण केवल आंशिक रूप से दिखाई देता है, निम्नलिखित चित्र पर एक नज़र डालें -

तो जब आप घूर्णन के दौरान देख सकते हैं तो दृश्य केवल आंशिक रूप से प्रस्तुत किया जाता है।

कोई भी इस तरह के व्यवहार में पहले कूद गया?

+0

एक बग? सिम्युलेटर पर ऐप हटाएं और इसे फिर से चलाएं। – MasterRazer

+0

आपके द्वारा पोस्ट किए गए कोड में स्वयं क्या है? यह स्पष्ट नहीं है कि आप इस कोड को किस कोड में निष्पादित कर रहे हैं। – rdelmar

+0

स्वयं कुछ NSObject अन्य UIViewController है। प्रवाह है - किसी अन्य UIViewController में मेरी ऑब्जेक्ट को इंस्टेंट करें, रूट व्यू कंट्रोलर को किसी अन्य के साथ बदलने के लिए ऑब्जेक्ट का उपयोग करें। AFAIK यह बहुत मानक प्रवाह है, फिर भी यह नहीं पता कि यह आंशिक रूप से क्यों प्रदान किया जाता है। अगर मैं एनीमेशन का उपयोग नहीं करता हूं और रूट रूट को प्रतिस्थापित करता हूं तो यह काम करता है। –

उत्तर

16

तो एक लंबे खोज के बाद मैंने पाया समस्या stackoverflow में थोड़ा अधिक सर्च कर रहे हैं [UIView transitionWithView:...] में था मैं Swapping rootViewController with animation

पाया पूरी तरह से काम करता है [UIView transitionFromView:..] का उपयोग करना।

नए कोड -

[UIView transitionFromView:self.window.rootViewController.view 
        toView:self.centerViewController.view 
        duration:0.5 
        options:UIViewAnimationOptionTransitionCurlUp 
       completion:^(BOOL finished) 
       { 
        self.window.rootViewController = self.centerViewController; 
       }]; 
+0

क्या यह कोड वास्तव में काम कर रहा है ?? यह काम नहीं करना चाहिए क्योंकि यह संकलन समय चेतावनी देगा ... आप rootViewController प्रॉपर्टी में UIView असाइन कर रहे हैं ... जो गलत है ... कृपया अपना उत्तर सही करें ... – DShah

+1

धन्यवाद, उत्तर अपडेट किया गया –

0

क्या आप ऑटो लेआउट का उपयोग कर रहे हैं? यदि ऐसा है, तो इसे अक्षम करने का प्रयास करें। मैंने ऑटो लेआउट और एनिमेशन के साथ कई समस्याओं में भाग लिया है।

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