6

टैब बार आधारित एप्लिकेशन में, यदि मेरे पास एक टैब से नेविगेशन स्टैक में एक नियंत्रक धक्का दिया गया है और फिर, जब कोई अन्य टैब सक्रिय होता है, तो मैं उस नियंत्रक को पॉप करने का प्रयास करता हूं, जब तक कि मैं इसे बिना एनीमेशन के पॉप करता हूं ।UIKit नियंत्रक को रिलीज़ नहीं करता है अगर इसे एनीमेशन के साथ हटाया नहीं जाता है?

यह काम करता है:

[navigationController popToRootViewControllerAnimated:NO]; 

और यह नहीं करता है:

[navigationController popToRootViewControllerAnimated:YES]; 

किसी को भी यहाँ क्या हो रहा है की किसी भी विचार है? animated पैरामीटर अनुचित तरीके से उपयोग किया जा रहा है?

अद्यतन:

एप्पल मुझे बताया कि यह वास्तव में UIKit में एक बग है, और वे इसे करने के लिए के रूप में तत्काल और सौंपा किसी रूप में चिह्नित। इसे नवीनतम रिलीज में हल किया गया हो सकता है लेकिन मेरे पास जांच करने का समय नहीं था।

+1

UIKit में एक बग की तरह लगता है। यदि आप इसे एक साधारण परियोजना के साथ पुष्टि कर सकते हैं, तो इसे ऐप्पल को सबमिट करें। –

+0

मैंने अभी पुष्टि करने के लिए एक नमूना प्रोजेक्ट बनाया है, और मैं इसे कर सकता हूं। निस्संदेह यह कुछ ऐसा नहीं है जो * प्रत्येक * UINavigationController के उपयोग के साथ हो रहा है। ऐसा होता है यदि आपके पास एक टैब के अंदर एक नेविगेशन नियंत्रक के साथ UITabBarController है, और दूसरे टैब से आप नेविगेशन नियंत्रक पॉप करते हैं। मैंने जो देखा वह यह है कि, यदि आपके पास स्टैक में 1 से अधिक व्यू कंट्रोलर हैं, तो वे सभी को अंतिम को छोड़कर रिहा कर दिया जाता है, जो तब तक बनाए रखा जाता है जब तक कि आप अन्य टैब (नेविगेशन नियंत्रक वाला एक) का चयन न करें। – eugeniodepalo

+1

यदि "अंतिम" नियंत्रक द्वारा आप रूट नियंत्रक का मतलब रखते हैं, तो यह प्रासंगिक है: "यदि स्टैक के शीर्ष पर दृश्य नियंत्रक मूल दृश्य नियंत्रक है, तो यह विधि कुछ भी नहीं करती है ... आप अंतिम आइटम को पॉप नहीं कर सकते ढेर।" ('PopViewControllerAnimated:' के लिए प्रलेखन से।) यूआईकिट ऑब्जेक्ट जारी करते समय आपको शायद ही कभी चिंता करने की ज़रूरत है। बस सुनिश्चित करें कि आप मेमोरी प्रबंधन का अपना हिस्सा करते हैं। कौन जानता है, हो सकता है कि ढांचे को बाद में रीसायकल करने के लिए किसी ऑब्जेक्ट पर हो? या शायद नहीं। मुद्दा यह है कि आप उन पर भरोसा कर सकते हैं कि वे अच्छी तरह से परीक्षण करें। – Felixyz

उत्तर

0

क्या डशुत्सी सुझाव देता है सही है। अगर आप अधिसूचनाओं को हटा देना चाहते हैं, तो नियंत्रक के viewDidUnload विधि में इसे बेहतर कहा जाता है। इस विधि को तब कहा जाता है जब नियंत्रक को ढेर से उतार दिया जाता है। मैं बस इसका उद्धरण दे रहा हूं क्योंकि हम टिप्पणी को उत्तर के रूप में वोट नहीं दे सकते।

+0

प्रलेखन में यह लिखा गया है कि viewDidUnload को केवल कम-स्मृति स्थितियों में ही बुलाया जाता है। मुझे लगता है कि यह मामला नहीं है। हालांकि यह वास्तव में वह उत्तर नहीं है जिसे मैं ढूंढ रहा था (नियंत्रक * को जारी किया जाना चाहिए), मैं इसे स्वीकार करूंगा क्योंकि एनिमेटेड पैरामीटर में हाँ को पास करने के अलावा यह एकमात्र कामकाजी समाधान है! धन्यवाद। – eugeniodepalo

0

यदि मुख्य समस्या मनाई गई अधिसूचनाएं हैं, तो "- (शून्य) दृश्य में पर्यवेक्षकों को क्यों न हटाएं WillDisappear: (BOOL) एनिमेटेड" - विधि?

+0

क्योंकि नियंत्रक छिपा हुआ है, तो भी मैं अधिसूचना प्राप्त करना चाहता हूं (उदाहरण के लिए उपयोगकर्ता एक और टैब चुनता है)। मुझे लगता है कि दृश्य WillDisappear: हर बार नियंत्रक प्रदर्शन में नहीं दिखाया जाता है, है ना? – eugeniodepalo

+0

आप डीडयूनललोड विधि को देखने का प्रयास कर सकते हैं जिसे दृश्य के नियंत्रक से दृश्य जारी होने पर कॉल किया जाना चाहिए। इस पर प्रलेखन देखें: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW36 – Dshutsi

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