如何转换到新的iOS故事板场景实例

时间:2014-12-20 05:30:52

标签: ios ipad swift segue xcode-storyboard

我正在使用Swift为iPad开发游戏。游戏是这样的,它可以在多轮中进行。一轮完成后,该轮的场景将转换为结束场景,显示有关完成的回合的信息,并为下一轮的玩家做好准备。

游戏的故事板包含圆形场景和从它到结束场景的segue。因为每一轮基本上是相同的,所以它似乎从最终圆场景转向另一轮场景。

有人可以使用segue展开从最终回合场景回到完成回合。然而,由于当前轮次已经结束,可能会更好,因为它不再需要完全新的圆形场景并消除已完成的圆形和圆形场景。

针对这种情况处理场景转换的最佳方法是什么?

我想出了一些似乎有用的东西。据我所知,摆脱结果场景的唯一方法就是放松,所以我在完成的回合中有动作,在展开过程中调用已完成的圆形场景并创建一个新场景使用这样的代码:

@IBAction func handleUnwinding(segue: UIStoryboardSegue) {
    self.presentingViewController?.dismissViewControllerAnimated(true, completion: {
        let nextController: UIViewController! = self.storyboard?.instantiateViewControllerWithIdentifier("TickingScene") as UIViewController

        var activeController = UIApplication.sharedApplication().keyWindow!.rootViewController!
        if let navigationController = activeController as? UINavigationController {
            activeController = navigationController.visibleViewController!
        }
        else if let presentingViewController = activeController.presentingViewController {
            activeController = presentingViewController;
        }
        activeController.presentViewController(nextController, animated:true, completion: nil)
    })
}

我想知道这种方法有多好,以及是否有更好的选择。

我提出了一种似乎更好的不同方法。

我之前忽略的一件事是我还有一个开始屏幕,用户可以点击开始按钮开始游戏。在处理展开的早期实现中,开始屏幕将在游戏场景和结果场景的转换之间短暂出现。这种新方法可以防止这种情况发生。

这个解决方案看起来有点沉重,只是它似乎比我想出的任何其他方法都更好。

我做的是我完全放弃了segues,因为它们不适合我,而是创建了一个UINavigationController,使其成为故事板中的初始视图控制器。我将其配置为隐藏导航栏,当需要在两个场景之间进行转换时,将通过在故事板上调用instantiateViewControllerWithIdentifier来创建新场景。然后调用UINavigationController的setControllers:animated方法,给它一个只有新场景的数组。这摆脱了现有场景,并在一次操作中转换到新场景。

0 个答案:

没有答案