2010-03-29 115 views
0

我使用Cocos2D作为我的主框架。在某些情况下,我想的Cocos2D加载笔尖文件,并有一个是视图:如何从窗口中删除视图?

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
TargetPlayerViewController *myController = [[TargetPlayerViewController alloc]initWithNibName:@"TargetPlayerViewController" bundle:nil]; 
[window addSubview:[myController view]]; 
[window makeKeyAndVisible]; 

可正常工作,并显示TargetPlayerViewController。精彩!

我需要知道的是:一旦该视图已被加载,我该如何删除视图本身?我尝试了几种不同的方式,但所有这些都导致程序崩溃。

为了测试我有设置其触发该方法的视图的按钮:

- (IBAction)GTFOnow:(id)sender { 
    NSLog(@"GFTO"); 
    //window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    //[self.view removeFromSuperview]; 
    //[window makeKeyAndVisible]; 
} 

GTFOnow是在TargetPlayerViewController的方法。当它被调用时,当前子视图(在上面的Cocos2D代码中被调用)应该从窗口中移除。

+0

“在这种方法中,视图应该从视图中移除”。这很混乱。我想你的意思是视图控制器应该从窗口中删除视图? – Felixyz 2010-03-29 16:03:24

回答

0

首先,您不应该因为想要删除子视图而创建新窗口。其次,无论发生什么,这都不会导致应用程序崩溃。在哪个课程中您有GTFOnow方法?我想在TargetPlayerViewController课上?

+0

GTFOnow方法在TargetPlayerViewController中。我希望这个观点能够从窗口中消失。 – 2010-03-29 19:20:43

+0

是的,视图可以从窗口中删除(虽然它是控制器正在删除它,所以它并不真正删除“本身”)。但是,您不需要像在此代码中那样创建新窗口。相反,您需要在启动时在您的应用程序委托中获取对该窗口的引用。这是视图是孩子的窗口,这是你想从中删除的窗口。一般来说,你很少想在iPhone应用程序中创建第二个窗口。 – Felixyz 2010-03-29 22:28:57