繁体   English   中英

无需点击按钮即可快速执行Segue

[英]Swift perform segue without clicking button

我正在SpriteKit中制作一个小游戏,其中存储了一个bool值,该值检查用户是否是第一次玩我的游戏。 如果是这样,我希望应用程序将他重定向到另一个输入他的角色名称的viewcontroller。

但是,我无法让我的应用程序执行此操作。

在我的“ 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)
    }
}

但是,“ setup viewcontroller”未加载。 我可以通过单击按钮来欺骗欺骗,但这不是我想要的。 我希望视图加载后立即发生。

有任何想法吗?

我不知道“设置视图控制器”未加载是什么意思,”但是通常我们不会在viewDidLoad执行segues。这时,该视图刚刚被加载到内存中并且尚未出现。这时的segue是一件奇怪的事情。

我建议您在viewDidAppear()执行segue:

 override func viewDidAppear(animated: Bool)  {
    super.viewDidAppear(animated: animated)
    performSegue(withIdentifier: "GoToSetup", sender: nil)
}

您可以通过以下方式以编程方式调用segue:

 self.performSegueWithIdentifier("segueId", sender: self);

据说,在viewDidLoad阶段,UIViewController不能完成任何UI交互,而不能执行performSegue,因为视图还不在视图层次结构中。 您可以在viewDidAppear(animated:Bool)执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM