2014-02-28 33 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的答案解决了这个问题。 –