斯威夫特执行segue没有点击按钮
问题描述:
我在SpriteKit做一个小游戏,我有一个布尔值存储,检查是否是第一次用户玩我的游戏。如果是这样,我希望应用将他重定向到另一个视图控制器,并在其中输入他的角色名称。斯威夫特执行segue没有点击按钮
但是,我无法让我的应用程序这样做。
在我的 “GameViewController.swift” 我有这样的代码:
override func viewDidLoad() {
super.viewDidLoad()
checkGame()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
}
}
func checkGame() {
//Check game
let firstPlay:Bool = appData.bool(forKey: "\(GameData.firstPlay)")
print(firstPlay)
if firstPlay == false {
print("Heading for setup")
self.performSegue(withIdentifier: "GoToSetup", sender: nil)
}
}
然而, “设置视图 - 控制” 未加载。我可以通过点击按钮来控制赛格,但那不是我想要的。我希望它在视图加载后立即发生。
任何想法?
答
可以通过编程调用以下配置的SEGUE:
self.performSegueWithIdentifier("segueId", sender: self);
答
我不知道你所说的“设置视图 - 控制”不装”的意思,但通常我们不会在执行塞格斯。viewDidLoad
这时,认为刚刚被加载到内存中,并没有出现在这个时候执行赛格瑞是种奇怪的事情
,我建议你在viewDidAppear()
执行SEGUE:。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated: animated)
performSegue(withIdentifier: "GoToSetup", sender: nil)
}
答
如前所述,在viewDidLoad阶段UIViewController不能完成任何UI交互,并执行Segue,因为视图不在视图层次结构中。您可以在viewDidAppear(animated:Bool)
处执行此操作。
这是什么给Sweeper的答案增加了什么?这是对现有答案的“我同意”评论,因为它没有提供任何其他信息。 –