当应用程序从后台再次运行时,我希望让用户能够在某些情况下导航到特定视图。
现在我正在使用这段代码强制我的应用程序:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
if(this situation occurs){
NavigationViewController *vc = [[NavigationViewController alloc] init];
self.window.rootViewController = vc;
[vc release];
}
eles{
Password *vc = [[Password alloc] init];
self.window.rootViewController = vc;
[vc release];
}
}
- (void)dealloc {
//[password release];
[_window release];
[_viewController release];
[super dealloc];
}
@end
但是我认为我以前的观点仍然以某种方式运行(计时器仍在运行)。我如何能够释放先前的视图并再次开始'干净'。
解决方案是检查窗口是否有子视图。如果有,它将从superview中删除。后面创建新视图并将其作为子视图添加到视图中
for (UIView *subView in [self.window subviews]) {
[subView removeFromSuperview];
}
self.viewController = [[[MyNewNibFile alloc] initWithNibName:@"MyNewNibFile" bundle:nil] autorelease];
[self.window addSubview:self.viewController.view];
答案 0 :(得分:0)
创建NavigationViewController和密码的全局实例,即在appdelegate.h中声明它们 在创建导航控制器和密码的新实例之前,请始终检查它们是否已经创建。如果它们已经创建,则先释放它们然后再创建一个新实例。