ios - 从 SKScene 返回查看 Controller

标签 ios ios7 uiviewcontroller sprite-kit skscene

因此,当您使用 SpriteKit 模板创建项目时。你有你的 View Controller 和你的 SKScene。

从我的 View Controller 中,我使用默认给出的代码开始我的游戏并呈现场景。

在我的 TCAViewcontroller.m

- (IBAction)startGame:(id)sender {

    NSLog(@"Start Game triggered");
    mainPageImage.hidden = 1;
    // Configure the view.
    // Configure the view after it has been sized for the correct orientation.
    SKView *skView = (SKView *)self.view;
    if (!skView.scene) {
        skView.showsFPS = YES;
        skView.showsNodeCount = YES;

        // Create and configure the scene.
        TCAMyScene *theScene = [TCAMyScene sceneWithSize:skView.bounds.size];
        theScene.scaleMode = SKSceneScaleModeAspectFill;

        // Present the scene.
        [skView presentScene:theScene];

    }
}

当用户在游戏中失败时,我想关闭场景并返回我拥有的 View Controller 。我的搜索似乎找不到任何东西来返回原始 View Controller ,只是插入游戏结束场景。但我不想推送到另一个场景,只需关闭当前场景并返回我的 TCAViewController。请使用代码回答以进行澄清谢谢

最佳答案

您的场景需要向您的 Controller 提供一条通信线路以指示已完成。例如,您可以在场景中创建委托(delegate)协议(protocol)和相应的属性。一个例子:

@protocol TCAMySceneDelegate;

@interface TCAMyScene : SKScene

@property (nonatomic, weak> id<TCAMySceneDelegate> delegate;

@end

@protocol TCAMySceneDelegate <NSObject>
- (void)mySceneDidFinish:(TCAMyScene *)gameScene;
@end

然后,在您的 TCAMyScene 的 .m 中
- (void)endTheGame {
    // Other game-ending code
    [self.delegate mySceneDidFinish:self];
}

在您的 View Controller 中,将自己设置为场景的委托(delegate)并实现该方法:
- (IBAction)startGame:(id)sender {
    // Other code

    TCAMyScene *theScene = [TCAMyScene sceneWithSize:skView.bounds.size];
    theScene.scaleMode = SKSceneScaleModeAspectFill;
    theScene.delegate = self;

    // Other code
}

- (void)mySceneDidFinish:(TCAMyScene *)myScene {
    // logic for dismissing the view controller
}

关于ios - 从 SKScene 返回查看 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21916702/

相关文章:

ios - 将用户输入的真实方位角转换为磁方位角

ios - (Swift, EarlGrey) 将 slider 移动到中间

iphone - 如何在不让原始 View 消失的情况下将 modalViewController 覆盖在另一个 View 之上?

ios - 在 HMEventTrigger 启用触发器中显示错误

ios - 如何从 Eureka 中的 ImageRow 访问所选图像?

ios - preferredStatusBarStyle 未被调用

iOS 7 TableView 的高度在 TabBar 下增加

ios - 如何在 UIScrollView 中实现不可滚动的 UICollectionView?

ios - 以非模态方式呈现 UIViewController?

ios - 更改导航后退按钮的目的地