您好,我设置了一个 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/