Swift - 1个屏幕到另一个屏幕

时间:2015-06-22 21:53:25

标签: ios swift

我为两个屏幕设置了我的UI,我不想在main.storyboard中连接屏幕。我想点击一个按钮,它将进入该屏幕,我将做淡化动画和之后的事情。当我按下按钮时,我只需要知道如何进入下一个屏幕。我可以举一个例子说明我在下面谈论的内容。

示例:在开始游戏之前,它会告诉您点击屏幕,然后当您点击文本时淡出。这就是我想用我的游戏做的事情。我不确定这是否是另一个屏幕,或者如果这是一个视图,一旦点击屏幕,某些标签就会消失。

我的MainMenuViewController:

import UIKit
import SpriteKit


class MainMenuViewController: UIViewController {


    var mainMenuScene: MainMenuScene!



    @IBOutlet weak var playButton: UIButton!


    @IBAction func playButtonPressed(sender: AnyObject) {
        mainMenuScene.playButtonPressed(sender)
    }


    @IBAction func playerButtonPressed(sender: AnyObject) {
        println("player")
    }

    @IBAction func LeaderboardButtonPressed(sender: AnyObject) {
        println("leaderboard")
    }

    @IBAction func shopButtonPressed(sender: AnyObject) {
        println("shop")
    }


    override func viewDidLoad() {
        super.viewDidLoad()


        //set up game screens

        // Configure the view

        // store a ref

        // Create and configure the scene
        mainMenuScene?.scaleMode = .AspectFill

        // Present the scene
    }



    override func shouldAutorotate() -> Bool {
        return true
    }

    override func supportedInterfaceOrientations() -> Int {
        if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
            return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
        } else {
            return Int(UIInterfaceOrientationMask.All.rawValue)
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

    override func prefersStatusBarHidden() -> Bool {
        return true
    }
}

我的MainMenuScene:

import Foundation
import UIKit
import SpriteKit

class MainMenuScene: SKScene {

    var movingGround: PPMovingGround!
    var square1: PPSquare1!
    var wallGen: PPWallGen!

    var isStarted = false

    var playButton: UIButton!



    func playButtonPressed(sender: AnyObject) {
        start()

    }


    func start() {
        isStarted = true

        square1.stop()
        movingGround.start()
        wallGen.startGenWallsEvery(1)
    }


    override func didMoveToView(view: SKView) {

    }


    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {


    }

    override func update(currentTime: CFTimeInterval) {

    }

}

我想将此代码连接到我的GameScene文件。我该怎么做?

1 个答案:

答案 0 :(得分:2)

我想我知道你的目标是什么,因为你不想直接使用 Main.storyboard ,你可以这样做:

presentViewController(YourNextViewController, animated: true, completion: nil)

你会在你当前所在的ViewController中拨打该电话进入下一个。

让我们说你在主屏幕上,正如你在 Flappy Bird 中所说的那样,当你点击按钮时,它可能会变成另一个< strong>查看控制器

我的建议是将此方法嵌套在函数中,因此您可以在gameStart函数中调用它,如下所示:

func changeViewControllers() {
  presentViewController(GameViewController, animated: true, completion: nil)
}

然后在gameStart()

中调用此方法
func gameStart() {
  changeViewControllers()
  //other code
}

//=====================================================================

好的,当您点按播放按钮时,我会帮助您转到另一个视图,添加以下代码:

@IBAction func playButtonPressed(sender: AnyObject) {
    mainMenuScene.playButtonPressed(sender)
}
相关问题