【问题标题】:how to unwind from SkView如何从 SkView 中放松
【发布时间】:2015-02-16 00:44:09
【问题描述】:

您好,我有一个从主菜单 UIViewController 开始播放我创建的游戏的 segues。但是如果我想退出主菜单,SpriteKit 中没有 prepareForSegue 功能。

如何从我的场景中回到主菜单?

我正在使用触摸开始处理事件而不是 UIButtons

【问题讨论】:

    标签: ios swift ios8 sprite-kit


    【解决方案1】:

    您从包含SKView 而不是SKScene 的ViewController 调用performSegue。在SKScene 中创建一个指向GameViewController 的弱变量。在创建 SKScene 时设置它。然后在这个属性上调用 performSegue。

    //Game Scene
    class GameScene {
       weak var gameViewController : GameViewController?
    }
    
    // GameViewController
    override func viewDidLoad() {
        //Other code
        scene.gameViewController = self
        skView.presentScene(scene)
    }
    

    当你想在 GameScene 中执行 segue 时,调用

     // Inside GameScene
     self.gameViewController?.performSegueWithIdentifier("indentifer", sender: self)
    

    返回主视图。

    self.gameViewController?.navigationController?.popViewControllerAnimated(true)
    

    【讨论】:

    • 我不断收到 'GameScene' 没有名为 performSegueWithIdentifier 的成员 这也不会在 ViewController 上创建 viewController 吗?我不需要一个放松的segue,这样我就不仅仅是在彼此之上创建了新的viewControllers吗? @rakeshbs
    • 对不起。我在最后一个陈述中犯了一个错误。我编辑了我的答案。你应该调用 self.gameView.Controller。执行Segue
    • 这行得通,但我正在创建新的视图,而不是展开。该应用程序最终崩溃并且性能大大降低了 FPS。有没有办法创建一个退出segue
    • 这似乎不起作用....只有 self.gameViewController?.popoverPresentationController 可用
    • 如果您使用的是导航控制器,请尝试此操作。 self.navigationController?.popViewControllerAnimated(true)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2020-04-16
    相关资源
    最近更新 更多