ios - 我是否在 ViewController 上加载 ViewController

标签 ios iphone swift uiviewcontroller sprite-kit

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

我有一个到 viewController 的转场和一个从 VC 到 gameViewController 的展开转场。

当我调用 unwind func 时,我会出于不同的原因重新初始化场景。我的问题是,我是在创建最终会导致崩溃的 View 还是正确地重新初始化场景。我从 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

    }
}

最佳答案

如果你正确地使用了 unwind segue,你就不会创建一个新的 View Controller 。从表面上看是这样的。如果您仍然不确定,可以注销 println(\(self)) 并确保它(我的 swift 已经生锈了,但我认为这就是您注销的方式)。

您的问题标题询问有关 View Controller 的信息,但您的问题信息询问有关创建其他 View 的信息。这也不是问题。当你做的时候

let skView = self.view as SKView

您正在获取 View Controller 的当前 View ,并将其转换为 SKView。您根本没有重新创建另一个 View 。

希望对您有所帮助。

关于ios - 我是否在 ViewController 上加载 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289011/

相关文章:

swift - 在 Swift 2.1 中通过 NSNotificationCenter.defaultCenter() 监听 NSArrayController 中的项目选择的正确方法是什么

xcode - NSTable insertRowsAtIndexes 动画

c# - 将 CAEmitterCell 添加到另一个 CAEmitterCell

ios - 如何遍历并获取 firebase 中嵌套节点的所有键?

ios - 在窗口中使用我的尺寸打开模态 ViewController

iphone - 用阴影画线,但只想保留阴影。操作系统

iphone - 检测 UITableView 何时被重新排序

ios - 创建一个 swift 泛型数组

iphone - 如何用一个数组填充更多表格 View 部分

ios - Swift iOS - 如何让文本字段在关闭和打开时根据预测文本移动