2014-02-28 37 views
0

我有一個主菜單,導致你玩遊戲的視圖。從您玩遊戲的角度看,您可以點擊一個按鈕返回到主菜單,我正在使用unwindSegue。現在有辦法從主菜單中點擊相同的「玩遊戲」按鈕,替換視圖,並保持遊戲狀態與unwindSegue被調用之前的狀態相同,否則我將不得不將數據重新加載到新視圖中?如何更換使用unwindSegue後彈出的確切視圖?

回答

1

是的,你可以這樣做,但不能用segue,因爲它們總是實例化新的控制器(除了展開)。所以,你可以在主菜單中爲你的遊戲視圖控制器創建一個屬性,並且只有在它不存在的情況下才會實例化它,然後用pushViewController:animated:來推送它。這樣的事情,

-(IBAction)gotToGameView:(id)sender { 
    if (! self.game) { 
     self.game = [self.storyboard instantiateViewControllerWithIdentifier:@"Game"]; 
    } 
    [self.navigationController pushViewController:game animated:YES]; 
} 
0

您應該存儲重新創建視圖所需的數據。然後,當用戶再次進入同一屏幕時,您可以使用保存的數據重新創建視圖。

+0

我遇到的問題是,遊戲有一個單一的球員以及基於回合的模式。因此,假設玩家正在玩單人遊戲,並且在遊戲中間離開了應用程序而沒有給我一個存儲遊戲數據的機會。然後他得到一個通知,告訴他他在網上回合制遊戲中的角色,所以當他打開遊戲時,單人遊戲視圖被替換掉,我失去了數據。所以我試圖決定是否以及如何保存數據,或者如果我應該使用故事板來彈出和關閉視圖以回到原始單人遊戲狀態的視圖。 –

+0

爲什麼不創建一個兩個視圖控制器呢?一個會處理單人模式和一個視圖,另一個會處理基於回合的模式?我認爲問題在於你試圖在一個視圖控制器中處理這兩種情況。 – RaffAl

+0

我確實有兩個視圖控制器,問題在於segue每次都創建一個新視圖,rdelmar的答案解決了這個問題。 –