2009-06-11 7 views
6

प्रोग्राम में से एक दृश्य में मैंने एक प्रोग्राम में, loadView/viewdidLoad 'पर 5 अलग-अलग कॉल देखे हैं, लेकिन मुझे समझ में नहीं आ रहा है कि इन्हें क्यों बुलाया जा रहा है। क्या कोई मुझे इसके पीछे यांत्रिकी को समझा सकता है?देखने के लिए एकाधिक कॉलडिडलोड/लोडव्यू

मैं निम्नलिखित तरीके से देखने का शुभारंभ माता पिता UIViewController (एक TabBar + NavigationBar आवेदन के हिस्से) में उदाहरण:

MainEditController *editController = [[MainEditController alloc] initWithNibName:@"MainEditView" bundle:nil];   
[self.navigationController pushViewController:editController animated:YES];   
[editController release]; 

मैं तो लॉग ऑन MainEditController'sviewDidLoad और loadView तरीकों (और उनके संबंधित सुपर तरीकों लागू) ।

'MainEditView' निब 3 आइटम शामिल हैं: -File का स्वामी (प्रकार MainEditController का), प्रथम प्रत्युत्तर (प्रकार UIResponder का) -View (प्रकार UIView का)

दृश्य आउटलेट से जुड़ा है फ़ाइल के मालिक और दृश्य में इसमें कोई तत्व नहीं है। मैं जो करना चाहता हूं वह मुख्य दृश्य में कई सब्सक्राइब जोड़ता है और एक विशिष्ट स्थिति के आधार पर उप-दृश्यों में से एक प्रदर्शित करता है।

मैंने सोचा कि viewDidLoad और loadView दोनों को नियंत्रक के भीतर कई विचार (1 इस मामले में) कहा जाएगा, लेकिन यह मान्य मान्य प्रतीत नहीं होता है।

+0

क्या कोई मौका है कि आप अपना MainEditController loadView फ़ंक्शन पोस्ट कर सकते हैं? – marcc

उत्तर

14

क्या आपकी loadView विधि [super loadView] पर कॉल कर रही है? यदि नहीं, तो दृश्य संपत्ति की संभावना ठीक से सेट नहीं की जा रही है, और इसलिए अगले time .view एक्सेस किया गया है, यह इसे फिर से लोड करने का प्रयास करता है।

अंधेरे में स्टैब, लेकिन loadView विधि के बिना, समस्या को हल करना मुश्किल है।

+6

लोडव्यू स्टेटस के लिए प्रलेखन: इस विधि के आपके कस्टम कार्यान्वयन को सुपर कॉल नहीं करना चाहिए। –

+0

के बारे में googling था और आपके जवाब मेरी समस्या तय :) :) धन्यवाद। – tarnfeld

+0

धन्यवाद! मैं यह समझ नहीं पाया कि क्या चल रहा था, मैंने डीबग किया और महसूस किया कि यह विधि असीम रूप से कॉल कर रही थी। –

6

मुझे यकीन नहीं है कि यह आप क्या देख रहे हैं लेकिन एक नेविगेशन नियंत्रक उन दृश्यों को रिलीज़ करेगा जो वर्तमान में स्मृति प्राप्त करने के लिए दृश्यमान नहीं हैं यदि ऐप द्वारा कम स्मृति चेतावनी प्राप्त होती है। जब दृश्य फिर से दिखाई देता है तो दृश्य फिर से बनाया जाता है, जो loadView कहते हैं।

0

दृश्य नियंत्रक की दृश्य संपत्ति को मान्य दृश्य पर सेट करें।

1

मैं -(void)loadView विधि को हटाकर एक ही समस्या हल करता हूं। यदि आप UIViewController को निब फ़ाइल के बिना बनाते हैं तो यह विधि स्वचालित रूप से कोड में जोड़ दी जाएगी।

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