2010-10-17 16 views
5

मैं एक ViewController कि अन्य subviews में जोड़ता है जो uiviewControllersViewDidAppear/ViewWillAppear नहीं बुलाया जा रहा है

subclassed किया है तो इसका इस तरह:

mainViewController 
     | 
    v---------v 
subVC1 subVC2 

और न subVC1 या subVC2 viewDidAppear/viewWillAppear पर निकाल दिया है उन्हें? मुख्य दृश्य नियंत्रक ऐप प्रतिनिधि में बना रहा है और यह वहां खिड़की के साथ भी जोड़ा गया है। http://www.qfpost.com/download.do?get=92f03538907e72665ea794d98ff8392b

उत्तर

5

मैंने आपके कोड को देखा था। तो समस्या यह है कि दृश्य विल्लएपियर/viewDidAppear को विंडो में दृश्य जोड़ा जाने पर कॉल किया जाता है, इसके किसी भी सबव्यू में नहीं। आप इसके लिए viewDidLoad का उपयोग करना चाह सकते हैं।

+0

वास्तव में, मुझे पहले कभी ऐसा नहीं करना पड़ा था? –

+0

अपने उदाहरण में, आप अपने subVC2 के दृश्य को अपने मुख्य व्यू कंट्रोलर के दृश्य में जोड़ते हैं। वह viewDidAppear को कॉल नहीं करता है, क्योंकि जब आप इसे जोड़ते हैं तो इस विधि को एप्लिकेशन की "विंडो" ऑब्जेक्ट होती है। आपके उदाहरण में आपने दो अन्य गलतियों को किया: आप "subit" विधि के साथ अपना सबवीसी 2 प्रारंभ करें। मुझे लगता है कि आप निब में निर्मित एक का उपयोग करना चाहते हैं। आपको initWithNibName का उपयोग करने की आवश्यकता है: बंडल: विधि। आखिरी बात यह है कि जब आप इसे सबव्यूव जोड़ते हैं तो आप subVC2 को रिलीज़ करना चाहेंगे, क्योंकि आप इसका कोई संदर्भ नहीं रखते हैं। – Julien

+0

ओह, मुझे निब का उपयोग करने का मतलब नहीं था, लेकिन मुझे subVC2 को रिलीज़ नहीं करना चाहिए क्योंकि मैंने केवल subvc2 के दृश्य को addubview विधि में पूरा व्यू कंट्रोलर नहीं दिया है? क्या यह आईफोन पर वीडब्ल्यू/डीए के बारे में भी ऐसा है, क्योंकि मैं कसम खाता हूं कि यह मेरे सामने नहीं हुआ है। –

1

सबसे पहले क्या आप वाकई वास्तव में क्या आप UIViewControllers के इस पदानुक्रम के साथ कर रहे हैं कर जाने की जरूरत है कर रहे हैं,:

यहाँ मेरी समस्या को दिखाने के लिए एक xcode परियोजना है? आपका मेनव्यू कंट्रोलर इस विचार से निपट नहीं सकता है कि आपके subVC1 और subVC2 के लिए ज़िम्मेदार हैं?

दूसरा, जब आप कोड को अपने मेनव्यू कंट्रोलर से कॉल करने के लिए कोड लिखते हैं तो आपका दृश्य विल्लएपियर/व्यूडिडएपियर कॉल किया जाएगा। आपके डिज़ाइन के बारे में कुछ और जानने के बिना, जब आपको उन्हें कॉल करना चाहिए, तो सलाह देना वास्तव में संभव नहीं है, लेकिन अगर 'मुख्य' दृश्य दिखाई देने पर उप-नियंत्रकों के विचार हमेशा दिखाई दे रहे हैं, तो शायद उन्हें कॉल करना समझ में आता है अपने mainViewController के दृश्य WillAppear/viewDidAppear विधियों से।

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