2010-03-29 104 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