我加载 ViewController 超过 ViewController

Am I loading ViewController over ViewController

您好,我设置了一个 spriteKit 游戏,每当用户死亡时,我都会弹出 ViewController 并设置重试按钮和一些 iAd。

我有一个到 viewController 的 segue 和一个从 VC 到游戏的 unwind segueViewController。

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

中调用该函数

查看:(全部在游戏中ViewController)

  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

    }
}

如果您正确使用展开转场,您就不会创建新的视图控制器。从表面上看是这样的。如果您仍然不确定,您可以注销 println(\(self)) 并确保它(我的 swift 已生锈,但我认为这就是您注销的方式)。

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

let skView = self.view as SKView

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

希望对您有所帮助。