Swift iOS:从ViewController中的实例到另一个ViewController执行Segue

时间:2015-05-22 19:14:06

标签: swift button uiviewcontroller segue

首先,我必须说这个平台上有太多的信息,因为每个人都在帮助。非常感谢你。

目前,我已达到一定程度,我无法自行前进。

这是我的问题:

我有一个MainScreen ViewController,它嵌入在导航控制器中。 从这个MainScreen,我可以用Segue显示一个创建Gamescene的GameViewController。 在这个Gamescene中,我有一个按钮,当它被点击时,显示一个Popup并暂停Gamescene。

此弹出窗口包含两个按钮:

  1. 恢复游戏并使弹出窗口消失的按钮。
  2. 一个按钮,应该结束Gamescene并返回主屏幕。
  3. 这是我的问题。 我无法为结束按钮创建功能。我尝试过不同的segll星座,但它并没有很好地结束。

    我认为这里的难点在于,这个按钮是在一个单独的类中。根据我的理解,这里的层次结构将是:

    GameViewController - > GameScene - >弹出窗口 - > EndButton

    您有什么想法可以解决这个问题吗?如果不使用segues,还有其他方法可以解决这种转变吗?

    非常感谢您的帮助!

    亲切的问候, 菲尔

    更新

    在我的Gamescene中,弹出窗口基本上是这样的:

    class GameScene: SKScene,  SKPhysicsContactDelegate {
    
      //  ....
      var pauseButton : UIButton! = UIButton()
      var pausePopup : PausePopup!    // my Popup class with the End button
      //  ....
    
      override func didMoveToView(view: SKView) {
    
        //configuring the button
        pause_button.addTarget(self, action: "pauseButtonPressed", forControlEvents: UIControlEvents.TouchUpInside)
    
        self.view?.addSubview(pause_button)
    
      }
    
      func pauseButtonPressed() {
        self.pausePopup = PausePopup(nibName: "uxPausePopup", bundle: nil)
        self.scene!.view!.paused = true
        self.pausePopup.showInView(self.viewPlaceHolder, animated: true, scene: self)
      }
        // this is where my popup appears.
    

    在我的Popup类中,我有一个EndButton的动作,它位于Popup上,我想从中返回主屏幕:

    @IBAction func showMainScreen(sender: AnyObject) {
       // this does not work ...
       self.performSegueWithIdentifier("showMainScreen", sender: nil)
    }
    

1 个答案:

答案 0 :(得分:1)

您无法从showInView调用其他视图,您需要关闭popOver并从GameScene调用mainView,这样您就可以在PausePopup或协议中创建竞争处理程序,将popOver的结果传递给GameScene处理结果