2013-03-31 78 views
0

我正在爲iPhone的詞搜索益智遊戲,我試圖實現應用程序的重新啓動按鈕。重啓按鈕應該能夠初始化一個新的視圖控制器,產生一個新的難題,並顯示新的難題。現在,在益智遊戲視圖中,我有一個按鈕,點擊它可以打開暫停菜單視圖,使用模式輪播(暫停菜單有三個按鈕,恢復,重新啓動,主菜單)。然後讓益智遊戲控制器成爲暫停菜單的代表,當按下按鈕時它會接收到通知。簡歷和主菜單按鈕有效,但我無法通過重新啓動按鈕重新加載視圖。難題在一個容器視圖內,它具有一個創建網格並顯示字母的集合控制器。黑屏當試圖刷新視圖控制器

隨着我現在的代碼,當我點擊重啓按鈕,我看到一個只顯示導航欄的黑屏。但是,一旦我點擊暫停菜單按鈕(位於導航欄中),然後點擊暫停菜單中的恢復按鈕,我就會看到包含新生成的拼圖的視圖。

下面是在pauseMenuController代碼:

- (IBAction)IBARestart:(id)sender { 
     [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 
     [self.delegate goToRestart]; 
     } 

現在,這裏是我puzzleGameController代碼:

-(void)goToRestart{   
    self.view = nil; 
    [self.view.window setNeedsDisplay]; 

    PuzzleCollectionControllerViewController *puzzleInstance = [self.childViewControllers lastObject]; 
     puzzleInstance.view = nil; 
     [puzzleInstance.view setNeedsDisplay]; // I tried reloading the cointainer view too, but it still shows black screen 


    } 

任何人有任何想法,爲什麼它顯示黑屏?由於提前

+0

而不是刪除視圖控制器的主視圖,請嘗試清除VC本身。然後用新的實例重新啓動它。顯示你的暫停和恢復按鈕片段會有所幫助。 – user523234

回答

1

我不知道這是否是足夠的代碼,讓你的問題..

但是我對這個擔心是: 你爲什麼「無」 self.view在重新啓動?如果你這樣做,視圖是「無」,因此不會顯示任何內容,puzzleInstance.view也是如此。

你可以在viewDidUnload中取消/釋放內存,因爲視圖將在viewDidLoad上再次設置,但通常我只是「nil」/「dealloc」任何屬性,插座等(在viewDidUnload或dealloc上,取決於在我設置/重新設置它們的位置),而不是視圖本身。 「setNeedsDisplay」只會「重繪」視圖,但如果它是零,恐怕沒有什麼可以重繪。所以我很確定這是你的問題。

什麼是不同的,或當你按「簡歷」(代碼?)時發生了什麼。

+0

我試圖使用ViewDidUnload解除分配內存,但該方法已棄用ios 6.原因,我最初做self.view「無」是因爲我想強制,ViewDidLoad再次運行。我的大部分邏輯是在viewDidLoad中,但我唯一擁有的是計時器,我有這個難題。至於當我按簡歷時,我唯一在那裏有一個方法,恢復計時器我有這個難題。 – RamonV

+0

如果您不使用ARC,則只需要dealloc。除非第一次在屏幕上顯示視圖,否則不能確定何時調用viewDid(Un)加載。 Ios可以在內存不足的情況下卸載視圖(當它不在屏幕上時)並在視圖返回到屏幕上時再次加載視圖。但是您可以使用viewWillAppear,它將在視圖出現之前每次調用。因此,只需創建一個方法「updateUI」,您可以在viewDidLoad和viewWillAppear中調用該方法。希望這會幫助你:-) – d4Rk

+0

是的,我試過了,它仍然沒有工作。我需要實現一個類別視圖來選擇拼圖主題詞,所以我的解決方法是在goToRestart方法中使用[self.navigationController popViewControllerAnimated:true]。無論如何感謝您的幫助! – RamonV