2013-11-25 11 views
5

मुझे बस एक ऐप I bug-test के साथ एक समस्या का सामना करना पड़ा। मैं दीवार के लिए मेरे सिर की पिटाई की गई थी को समझने के लिए कारण है कि मैं यह त्रुटि आई:नेस्टेड पुश एनीमेशन आईओएस 7 बग?

इस happends जब मैं दो को दबाएं:

2013-11-25 09:02:55.687[186:60b] nested push animation can result in corrupted navigation bar 
2013-11-25 09:02:56.055[186:60b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 
2013-11-25 09:02:57.666[186:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview' 

के बाद थोड़ी देर के मैं बग पुन: पेश करने की कोशिश करने के लिए एक नई परियोजना बनाई अलग-अलग segues के साथ बार बटन आइटम, और फिर एक ही समय में रिलीज। मैं segues के साथ कहानी बोर्ड का उपयोग कर रहा हूँ और कोई भी स्वयं लिखित कोड नहीं है। क्या यह एक आईओएस 7 बग है, या क्या मुझे कुछ याद आ रहा है?

मैं सिम्युलेटर पर पुन: पेश करने के बाद से मैं दो कर्सर की जरूरत नहीं है नहीं कर पाए हैं ... मैं iOS7 साथ 7.0.3

कहानी बोर्ड की छवि एक iPad2 उपयोग कर रहा हूँ:

enter image description here

संपादित करें:

जब से मैं तोड़ी हो गया और पूरी तरह से बिना कोई भी पुन: पेश और इस बग की पुष्टि करने की कोशिश कर downvoted, मैं यह पुष्टि के बिना रिपोर्ट की है।

EDIT2:

एप्पल एक स्टैक ट्रेस के लिए कहा। लेकिन चूंकि मैंने उन्हें पुन: पेश करने के लिए सही कदम दिए, इसलिए मुझे परेशान नहीं हुआ। यह मेरा काम नहीं है। तो इस बारे में रिपोर्ट करने में संकोच न करें।

+0

यदि आप किसी बटन को क्लिक करने का प्रयास करते हैं तो यह बग कैसे उत्पन्न करेगा – codercat

+0

मैं बार बार बटन आइटम दबाता हूं, उन पर रोक लगाता हूं। और एक ही समय में रिलीज। – ullstrm

+0

यह प्रोग्रामिंग प्रश्न नहीं है और वास्तव में ऐप्पल बोर्डों या रडार में होना चाहिए यदि आपको लगता है कि यह एक बग है। – Fogmeister

उत्तर

0

शायद यह है कि आप एक ही समय में दो सीगों को कॉल करते हैं और जब आप बटन छोड़ते हैं तो ऐप दूसरे सेग्यू समाप्त होने से पहले एक सेग को कॉल करने का प्रयास करता है।

तो मैं क्या देख सकता हूं कि एक्सकोड प्रस्तुत करने वाली चेतावनी यह है कि आपके दृश्य नियंत्रकों में से एक को सेग्यू द्वारा ट्रिगर किया जाता है और अन्य दृश्य नियंत्रक के लिए अन्य सीगू पहले दृश्य नियंत्रक के लोडिंग अंत की प्रतीक्षा किए बिना ट्रिगर किया जाता है ।

आप बूल या किसी प्रकार का नियंत्रक सेट करने का प्रयास कर सकते हैं जो पहली बार कंट्रोलर लोड होने पर जांचता है और फिर जब आप जानते हैं कि पहला व्यू कंट्रोलर ठीक से लोड हो गया है तो अपने अन्य सेग्यू को ट्रिगर करें।

+0

हां, मैं गीलेर की जांच करने के लिए अपने स्वयं के बुलियन ध्वज के साथ मैन्युअल रूप से segues निष्पादित कर रहा हूं यह सुरक्षित है या नहीं। ऐप्पल छोटी गाड़ी सेग्यू कोड चला जाता है। जब वे छोटी गाड़ी होते हैं तो वे स्टोरी बोर्ड सेग का उपयोग करने के लिए हमें प्रोत्साहित क्यों करते हैं? – ullstrm

+1

जब मैं एप्पल डेवलपर टूल के साथ प्रोग्रामिंग कर रहा हूं, तो मुझे सबसे अधिक समस्याएं और बग का सामना करना पड़ा है, मेरी 99% बार मेरी गलती है, इसलिए मैं वास्तव में एक्सकोड बग पर टिप्पणी नहीं कर सकता .. – Oskariagon

+0

और यही कारण है मैंने इसे यहां पोस्ट किया है, यह देखने के लिए कि कोई और सेब पर एक बग रिपोर्ट पोस्ट करने से पहले पुन: उत्पन्न कर सकता है या नहीं। – ullstrm

0

मैं निम्न कार्य करके मेरे एप्लिकेशन में एक ही समस्या हो रही थी: (segue एनीमेशन के साथ किया जाता है) 2 जल्दी से नए स्क्रीन पर एक चयन करें 1 लॉगिन (एक और segue शुरूआत)

यदि आप करने की कोशिश पिछले संक्रमण एनीमेशन पूरा होने से पहले एक सेगू प्रदर्शन करें, यह इसे खराब कर सकता है। तो मैंने segue प्रदर्शन करने से पहले देरी जोड़ा और यह ठीक करने लग रहा था। हालांकि, मुझे नहीं लगता कि यह एक अंतिम समाधान है क्योंकि डिवाइस कितनी तेज़ है इस पर निर्भर करता है कि segue एनीमेशन अवधि अलग-अलग हो सकती है।

मुझे लगता है कि देखने के बाद सबसे अच्छा समाधान segue को ट्रिगर करना होगा DidAppear।

0

मैंने अभी कुछ ऐसा लागू किया है और अब यह काम कर रहा है।

तो मेरे पास नियंत्रक ए, बी & सी है। आम तौर पर उपयोगकर्ता ए से बी और बी से सी तक नेविगेट कर सकते हैं लेकिन अब मैंने एक तरीका बनाया है कि उपयोगकर्ता स्वचालित रूप से ए से सी (बी के माध्यम से) पर नेविगेट कर सकते हैं।

मैंने सी को धक्का देने के लिए बी में सार्वजनिक विधि बनाने के लिए क्या किया था।इस विधि लगता है:

- (void)pushC { 
    if ([self isViewLoaded] && self.navigationController.visibleViewController == self && ![self isBeingPresented] && self.didViewAppear) { 
     [self performSegueWithIdentifier:@"CSegue" sender:self]; 
    } 
    else { 
     [self performSelector:@selector(pushC) withObject:nil afterDelay:0.4f]; 
    } 
} 

सब कुछ पहले से ही उस didViewAppear संपत्ति से अलग आप के लिए दिया जाता है। वह मैंने - viewDidAppear पर सत्य पर सेट किया।

तब मैं केवल, वह सही समय वास्तव में अगले segue कॉल करने के लिए इंतजार करेंगे दृश्य नियंत्रक ए में - prepareForSegue पद्धति पर - pushC कॉल करने के लिए हमने देखा के रूप में की जरूरत है।

यह ठीक काम करता है लेकिन सभी नेविगेशन संक्रमण दिखाता है, जिनकी मुझे आवश्यकता नहीं है। मैं नेविगेशन नियंत्रक में एक पेड़ को धक्का देने में सक्षम होना पसंद करूंगा, इसलिए मेरे पास केवल एक संक्रमण नेविगेशन होगा। खैर, मुझे लगता है मुझे बाद में इस बात पर वापस आना होगा।

यह कहा जा रहा है कि मुझे नहीं लगता कि यह एक बग है लेकिन वास्तव में आईओएस 7 में व्यवहार में बदलाव क्योंकि एनीमेशन लंबा हो गया है।

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