我是通过ViewController加载ViewController吗?

时间:2015-03-26 21:16:20

标签: ios iphone swift uiviewcontroller sprite-kit

嗨我有一个spriteKit游戏设置,每次用户死亡时我会弹出ViewController并再次尝试按钮和一些iAd设置。

我有一个到viewController的segue和一个从VC到gameViewController的unwind segue。

当我调用unwind func时,我会出于不同的原因重新初始化场景。我的问题是,我是否创建了视图视图,最终导致崩溃或我正确地重新初始化场景。我从viewDidLoad中获取代码并将其放入一个名为" setUp()"的函数中。我从unwindSegue中调用该函数。

检查出来:(全部在GameViewController中)

  var currentLevel: Int!
var gameScene = GameScene()

override func viewDidLoad() {
    super.viewDidLoad()

    currentLevel = gameScene.currentLevel
    setUp()


}
 @IBAction func perpareForUnwind(unwindSegue: UIStoryboardSegue) {
    setUp()
}

func setUp() {

    if let scene = GameScene.level(currentLevel) {
        // Configure the view.
        let skView = self.view as SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)

        scene.viewController = self

    }
}

1 个答案:

答案 0 :(得分:0)

如果正确使用展开segue,则不会创建新的视图控制器。从它的外观来看就是这样。如果您仍然没有信心可以退出println(\(self))并确认它(我的swift生锈了,但我认为这就是你记录的方式)。

您的问题标题询问了视图控制器,但您的问题信息询问有关创建其他视图的信息。这也不是问题。当你这样做

let skView = self.view as SKView

您将获取视图控制器的当前视图,并将其转换为SKView。您根本不会重新创建另一个视图。

希望这有帮助。