Iphone 屏幕上的故事板场景游戏

Iphone 屏幕上的故事板场景游戏,iphone,objective-c,ios,Iphone,Objective C,Ios,我对编程和Obj-c还不熟悉,我正在寻找一个清晰的问题。我用故事板展示我的游戏的每一页,在主游戏场景中,我有代码在特定时间在屏幕上实例化游戏,但我担心我调用新场景的方式不是获得我想要的东西的正确方式 当前主场景继续在游戏屏幕下运行,相反,我希望它停止游戏场景中的所有内容,只有分数值通过页面传输到游戏 我当前在屏幕上加载游戏的代码: -(void)goGameOver { //Send to Game Over screen UIStoryboard *sb = [UIStoryboard sto

我对编程和Obj-c还不熟悉,我正在寻找一个清晰的问题。我用故事板展示我的游戏的每一页,在主游戏场景中,我有代码在特定时间在屏幕上实例化游戏,但我担心我调用新场景的方式不是获得我想要的东西的正确方式

当前主场景继续在游戏屏幕下运行,相反,我希望它停止游戏场景中的所有内容,只有分数值通过页面传输到游戏

我当前在屏幕上加载游戏的代码:

-(void)goGameOver
{
//Send to Game Over screen
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"gameOverPage"];
vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:vc animated:NO completion:NULL];
}

我希望我的目标是明确的,如果没有,请让我知道,我会尝试重新措辞

视图控制器的工作方式是,它们将继续处于活动状态,直到被“弹出”或“解除”。由于您在游戏页面上呈现一个模式视图,因此游戏页面仍在内存中,如果需要,可以继续执行操作

一种非常常见的设计模式是“底层”页面,即创建和呈现模态视图控制器的页面,应该通过一种称为协议/委托的机制将其关闭。它能做到这一点的唯一方法是,如果它仍然处于活动状态,并且因为它仍然处于活动状态,其他代码也可以运行

我不确定在您的游戏中,“游戏结束”视图出现后会发生什么?新游戏可以开始吗?如果可以,从哪里开始?无论如何,导航在不同的应用程序中总是不同的

我的一个想法是返回到一个基本导航点,并从该控制器显示开始页面和游戏结束页面,当游戏结束时,让活动视图控制器“弹出”回到根控制器,它可以显示游戏结束视图。这样,如果你想“重新开始”,一个简单的“pop”或“disclose”会让你回到游戏开始的地方

要真正做到这一点,您需要一个UINavigationController。由于您提到您使用的是情节串连板和分段,所以排列连接到UINavigation控制器的视图控制器是非常常见的

如果是这种情况,您可以使用一个标志或对象来确定游戏已经开始,并使用同一个标志来确定游戏结束

例如,在导航堆栈中的第一个视图控制器上,您可能有如下逻辑:

-(void)viewWillAppear:(BOOL)animated {

     if(self.gameStarted == NO){
         self.gameStarted = YES;
         [self performSegueWithIdentifier:@"startGame"];
}
else {
        self.gameStarted = NO;
        [self performSegueWithIdentifier:@"endGame"];
}
[self.navigationController popToRootViewControllerAnimated:YES];
现在,当您确定游戏结束时,在该视图控制器中,它应该位于导航堆栈中,您需要“弹出”到第一个控制器,如下所示:

-(void)viewWillAppear:(BOOL)animated {

     if(self.gameStarted == NO){
         self.gameStarted = YES;
         [self performSegueWithIdentifier:@"startGame"];
}
else {
        self.gameStarted = NO;
        [self performSegueWithIdentifier:@"endGame"];
}
[self.navigationController popToRootViewControllerAnimated:YES];
我希望这个想法在某种程度上有所帮助。有时,让导航按您希望的方式工作可能会很有挑战性