强制App导航到AppDidBecomeActive中的特定视图

时间:2012-02-02 13:12:31

标签: ios memory-management view

当应用程序从后台再次运行时,我希望让用户能够在某些情况下导航到特定视图。

现在我正在使用这段代码强制我的应用程序:

- (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];

1 个答案:

答案 0 :(得分:0)

创建NavigationViewController和密码的全局实例,即在appdelegate.h中声明它们 在创建导航控制器和密码的新实例之前,请始终检查它们是否已经创建。如果它们已经创建,则先释放它们然后再创建一个新实例。