के रूट व्यू कंट्रोलर को बदलना जब मेरा ऐप पहले लोड होता है, तो मैंने rootViewController
UIWindow
से controllerA
की संपत्ति सेट की है।UIWindow
कभी-कभी मेरे ऐप के दौरान, मैं rootViewController
को controllerB
में बदलना चुनता हूं।
समस्या यह है कि कभी-कभी जब मैं controllerB
में फ्लिप संक्रमण करता हूं, तो मुझे इसके पीछे controllerA
का दृश्य दिखाई देता है। किसी कारण से दृश्य को हटाया नहीं जा रहा है। और भी चिंताजनक यह है कि rootViewController
से controllerB
, controllerA
की dealloc
विधि को कभी भी निकाल दिया नहीं जाता है।
मैं UIWindow
की subviews को दूर करने की कोशिश की है मैन्युअल controllerB
पर जाने के पहले, कि रों dealloc अभी भी कहा जाता हो जाता है कभी नहीं controllerA
'पृष्ठभूमि लेकिन controllerA
में विचारों' को देखने का मुद्दा हल करती है। यहाँ क्या चल रहा है ????
सेब डॉक्स कहते हैं:
रूट दृश्य नियंत्रक विंडो की सामग्री दृश्य प्रदान करता है। इस प्रॉपर्टी पर व्यू कंट्रोलर असाइन करना (या तो प्रोग्रामेटिक रूप से या इंटरफ़ेस बिल्डर का उपयोग करना) दृश्य नियंत्रक के दृश्य को विंडो के सामग्री दृश्य के रूप में स्थापित करता है। यदि विंडो में मौजूदा दृश्य पदानुक्रम है, तो नए दृश्य स्थापित होने से पहले पुराने विचार हटा दिए जाते हैं।
अद्यतन
यहाँ मेरी AppDelegate का कोड है:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self showControllerA];
[self.window makeKeyAndVisible];
return YES;
}
- (void)showControllerA
{
ControllerA* a = [ControllerA new];
self.window.rootViewController = a;
}
- (void) showControllerB {
ControllerB* b = [ControllerB new];
self.window.rootViewController = b;
}
क्या आप अपने ऐप प्रतिनिधि में विधि 'डीफिनिश लांचिंगविथऑप्शन:' विधि के लिए कोड प्रदान कर सकते हैं? – Cezar
बेवकूफ सवाल, लेकिन क्या आप दूसरे नियंत्रक को दबाते समय 'नियंत्रक ए' को शून्य पर सेट करते हैं? यदि नहीं तो यह dealloc नहीं होगा। (मुझे लगता है कि आप हैं) – Putz1103
मैं कभी भी नियंत्रक को पॉइंटर नहीं रखता हूं इसलिए सुनिश्चित नहीं है कि मैं शून्य पर क्या सेट करूंगा। – aloo