以编程方式触发放松警惕

时间:2019-04-29 18:46:20

标签: swift xcode segue unwind-segue

我正在制作一个可以在按下“转到”按钮的同时切换到另一个屏幕的应用。 3秒钟后,屏幕变黑。然后6秒钟后,我希望它无需单击按钮即可退回到主屏幕,但是到目前为止,我还不知道如何使它工作。

我已将ctrl从视图控制器拖动到退出按钮以创建展开序列,但是我不知道如何在代码中调用它。

这是我在GameViewController中与segue相关的代码:

导入UIKit 导入SpriteKit 导入GameplayKit

GameViewController类:UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    let skView = view as! SKView
    let scene = GameScene(size: view.bounds.size)

    //skView.showsFPS = true
    scene.scaleMode = .resizeFill
    scene.vc = self
    skView.presentScene(scene)
}

@IBAction func unwindToMainMenu(sender: UIStoryboardSegue)
{

    //let gameVeiwController = sender.source]
    // Pull any data from the view controller which initiated the unwind segue.
}

现在这是我的GameScene类,其中包含我要取消序列的功能:

class GameScene: SKScene {

var vc: UIViewController?

private var circleNode : SKShapeNode?

var fingersDown: Int = 0
let maxFingers: Int = 4
var selectionStarted = false

var touchNodes = [UITouch:SKShapeNode]()

func startSelectionGame(){
    selectionStarted = true
    self.backgroundColor = UIColor.yellow
    _ = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { timer in
        //both dont work
        self.vc!.performSegue(withIdentifier: "unwindToMainMenu", sender: self.vc)
        self.vc?.performSegue(withIdentifier: "unwindToMainMenu", sender: self)
    }
    _ = Timer.scheduledTimer(withTimeInterval: 3.0, repeats: false) { timer in
        self.backgroundColor = UIColor.black
        self.changeColors()
    }

}

Main.storyboard从第一个屏幕到游戏屏幕只有一个顺序。

我只想让我的程序正常工作,我知道我缺少一些简单的东西。谢谢。

2 个答案:

答案 0 :(得分:2)

您需要做三件事:

  1. 在左侧的文档大纲视图中找到您的序号。点击它。
  2. 在右侧的 Attributes Inspector 中,将 Identifier (标识符)设置为unwindToMainMenu
  3. 要触发它,请致电self.performSegue(withIdentifier: "unwindToMainMenu", sender: self)

答案 1 :(得分:0)

您可以使用以下方式代替轻松的搜寻:

dismiss(animated: true)