2012-06-23 17 views
5

से प्रस्तुत नहीं हो धक्का एक कस्टम segue में नेविगेशन बार, मैं निम्नलिखित सरल संक्रमण है। हालांकि, एनीमेशन को निष्पादित करते समय, शीर्ष पर एनएवी बार में एक गड़बड़ लेआउट होता है (ऊपरी बाएं कोने में कोई भी बटन नहीं होता है, कोई शीर्षक नहीं), एनीमेशन समाप्त होने पर ही स्थान पर पॉपिंग होता है। किसी को पता है कि मैंने क्या गलत किया है और इसे कैसे ठीक किया जाए? धन्यवाद!UINavigationController के लिए कस्टम एनीमेशन सही ढंग से

उत्तर

5

मेरी समस्या का पता लगाया। मूल कोड वास्तव में गलत है कि UINavigationController कैसे काम करता है और UIViewControllers के साथ इंटरैक्ट करता है यह प्रबंधित करता है। (क्या मैं ओपी में किया था की तरह Annoyingly सामान पुराने अतः पदों में एक समाधान के रूप पाया जा सकता है।)

यहाँ कोड है कि (एक मामूली वक्रोक्ति साथ) मेरे लिए काम करता है:

- (void) perform { 
    UIViewController *src = (UIViewController *) self.sourceViewController; 
    UIViewController *dst = (UIViewController *) self.destinationViewController; 
    [UIView transitionFromView:src.view 
         toView:dst.view 
         duration:1 
         options:UIViewAnimationOptionTransitionFlipFromBottom 
        completion:nil]; 
    [UIView transitionFromView:src.navigationItem.titleView 
         toView:dst.navigationItem.titleView 
         duration:1 
         options:UIViewAnimationOptionTransitionFlipFromBottom 
        completion:nil]; 
    [src.navigationController pushViewController:dst animated:NO]; 
} 

वक्रोक्ति: इस जाएगा सामग्री दृश्य से अलग से नेविबार को एनिमेट करें, इसलिए आपके पास पूरी स्क्रीन के बजाय दो टुकड़े फ़्लिपिंग हैं। मैं मूल रूप से करने की कोशिश की थी:

[UIView transitionFromView:src.navigationController.view 
         toView:dst.navigationController.view 

लेकिन है कि क्योंकि 1) गंतव्य के navigationController संपत्ति भी अभी तक सेट नहीं है जब तक यह एक नव नियंत्रक पर धक्का दे दिया है विफल रहता है, और 2) यदि ऐसा हुआ था मैं जिक्र होगी एक ही विचार के लिए! मैं भूल गया था कि

एक नेविगेशन नियंत्रक के लिए दृश्य सिर्फ एक नेविगेशन पट्टी, एक वैकल्पिक उपकरण पट्टी, और अपने कस्टम सामग्री वाली दृश्य सहित कई अन्य विचारों, के लिए एक कंटेनर है ... की सामग्री हालांकि नेविगेशन पट्टी और उपकरण पट्टी विचारों में परिवर्तन, विचारों स्वयं करते नहीं ... नेविगेशन नियंत्रक वस्तु नेविगेशन पट्टी की सामग्री को गतिशील नेविगेशन आइटम का उपयोग कर बनाता है पर दृश्य नियंत्रकों के साथ जुड़े ( UINavigationItem वर्ग के उदाहरण) नेविगेशन ढेर। नेविगेशन बार की सामग्री को बदलने के लिए, इसलिए आपको अपने कस्टम व्यू नियंत्रकों के लिए नेविगेशन आइटम कॉन्फ़िगर करना होगा। (docs)

+0

क्या कोई समझा सकता है कि यह क्यों कम किया गया था? – qix

+0

बहुत बहुत धन्यवाद! आपके कोड से छीनने में मुझे पता लगाने में मदद मिली, मैं पुश के दौरान केवल नेविगेशन बार स्विचिंग को एनिमेट कर सकता हूं, लेकिन सामग्री दृश्य स्विचिंग नहीं – Denis

0

एक और "quibble"? मैं

[UIView transitionFromView ... 

ताकि नेविगेशन नियंत्रक गंतव्य के viewDidLoad विधि के भीतर पहुंचा जा सकता था पहले

[src.navigationController pushViewController:dst animated:YES]; 

डाल दिया।

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