Wenn meine App zuerst geladen wird, setze ich die rootViewController
Eigenschaft meines UIWindow
auf controllerA
.Ändern des rootViewControllers eines UIWindow
Irgendwann während meiner App, ich ändere die rootViewController
zu controllerB
.
Das Problem ist, dass manchmal, wenn ich einen Flip-Übergang in controllerB
mache, sehe ich controllerA
's Blick dahinter. Aus irgendeinem Grund wird diese Ansicht nicht entfernt. Was noch beunruhigender ist, ist, dass nach dem Setzen der rootViewController
auf controllerB
, controllerA
dealloc
Methode nie ausgelöst wird.
Ich habe versucht, die Subviews von UIWindow
manuell zu entfernen, bevor zu controllerB
Schalten, löst das Problem dadurch zu sehen controllerA
‚s Ansichten im Hintergrund, aber controllerA
‘ s dealloc noch wird nie genannt. Was geht hier vor ????
Äpfel docs sagen:
Der Root-View-Controller stellt des Fensters die Inhaltsansicht. Durch Zuweisen eines Ansichtscontrollers zu dieser Eigenschaft (entweder programmgesteuert oder mithilfe von Interface Builder) wird die Ansicht des Ansichtscontrollers als Inhaltsansicht des Fensters installiert. Wenn das Fenster eine vorhandene Ansichtshierarchie aufweist, werden die alten Ansichten entfernt, bevor die neuen Ansichten installiert werden.
UPDATE
Hier ist der Code meiner 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;
}
Können Sie den Code für Ihre 'application: didFinishLaunchingWithOptions:' -Methode in Ihrem App-Delegaten bereitstellen? – Cezar
Dumme Frage, aber setzen Sie den 'ControllerA' auf Null, wenn Sie den zweiten Controller drücken? Wenn nicht, wird es nicht freigegeben. (Ich nehme an, Sie sind) – Putz1103
Ich halte nie einen Zeiger auf ControllerA so nicht sicher, was ich auf Null setzen würde. – aloo