2015-02-17 6 views
6

dismissViewControllerAnimated:completion: राज्यों के लिए iOS दस्तावेज़:आईओएस 8 बग dismissViewController के साथ एनिमेटेड: समापन: एनीमेशन?

आप वर्तमान उत्तराधिकार में कई दृश्य नियंत्रकों, इस प्रकार, प्रस्तुत दृश्य नियंत्रकों के एक ढेर निर्माण ढेर में कम नियंत्रक एक दृश्य पर इस विधि बुला इसके तत्काल बच्चे को देखने को खारिज करते हैं नियंत्रक और स्टैक पर उस बच्चे के ऊपर सभी दृश्य नियंत्रक। जब ऐसा होता है, तो केवल शीर्ष-दृश्य को एनिमेटेड फैशन में खारिज कर दिया जाता है; किसी भी इंटरमीडिएट व्यू कंट्रोलर को स्टैक से हटा दिया जाता है। शीर्ष-दृश्य को इसके मोडल संक्रमण शैली का उपयोग करके खारिज कर दिया गया है, जो स्टैक में अन्य दृश्य नियंत्रकों द्वारा उपयोग की जाने वाली शैलियों से अलग हो सकता है।

इसका मतलब यह है जब एक बार

[[[self presentingViewController] presentingViewController] dismissViewControllerAnimated:YES completion:nil];

एनीमेशन दिखाया शीर्ष मॉडल दृश्य खारिज कर दिए जाने होना चाहिए का उपयोग करने में दो मॉडल दृश्य नियंत्रक को आउट किया।

यह वास्तव में आईओएस 7 और इससे पहले का मामला है, लेकिन आईओएस 8 में दिखाया गया एनीमेशन शीर्षतम दृश्य नहीं है (मेरे अनुभव में, यह दूसरा सबसे ज्यादा दृश्य है)। क्या यह व्यवहार आईओएस 8 में एक बग है या क्या मैं कुछ गलत कर रहा हूं?

+1

क्या आपका मतलब है सबसे ऊपर दृश्य अचानक एनीमेशन की शुरुआत में गायब हो जाते हैं: यहाँ सब दृश्य नियंत्रकों पर पुनरावृत्ति के बिना स्विफ्ट में मेरी संस्करण है? – AncAinu

+0

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

+0

क्या ऐप्पल को एक बग रिपोर्ट दर्ज की गई है? मुझे नहीं पता कि यह कैसे करें या कैसे जांचें। – James

उत्तर

3

जैसा कि ऊपर टिप्पणी की गई है: मुझे एक ही सीधा संदर्भ में एक ही समस्या दिखाई देती है। मैं बस के रूप में यहाँ वर्णित एक स्क्रीनशॉट का उपयोग कर वैकल्पिक हल toke और यह सब मध्यवर्ती viewControllers करने के लिए एक subview के रूप में जोड़ें: यहाँ @theguy से How to dismiss a stack of modal view controllers with animation without flashing on screen any of the presented VCs between the top and bottom?

// this in during unwind in a custom UIStoryboardSegue (that is the reason why it might look wrong with what is what: srcViewController and destViewController 
    UIViewController* aPresentedViewController = destViewController.presentedViewController; 
    while (aPresentedViewController != nil) { 
     if (aPresentedViewController == srcViewController) { 
      break; 
     } 
     UIView *anotherSrcViewCopy = [srcViewController.view snapshotViewAfterScreenUpdates: NO]; 
     anotherSrcViewCopy.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
     [aPresentedViewController.view addSubview:anotherSrcViewCopy]; 
     // recurse through the presentedViewController hierarchy 
     aPresentedViewController = aPresentedViewController.presentedViewController; 
    } 
1

एक ही समस्या है और एक ही समाधान।

guard 
    let presentedViewController = segue.destination.presentedViewController, 
    let viewToCopy    = segue.source.view.snapshotView(afterScreenUpdates: false) 
else { return } 

viewToCopy.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
presentedViewController.view.addSubview(viewToCopy) 
संबंधित मुद्दे