我加载 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。您根本没有重新创建另一个视图。
希望对您有所帮助。
您好,我设置了一个 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。您根本没有重新创建另一个视图。
希望对您有所帮助。