Xcode with swift: 是否可以在不重置第一个视图控制器的情况下在另一个视图控制器上显示?

Xcode with swift: Is it possible to show a view controller upon another without resetting the first?

我正在创建一个带有暂停按钮的简单游戏。当我 return 时,我想在不重置游戏视图控制器的情况下显示另一个带有暂停屏幕的视图控制器。当我按下恢复按钮并 return 进入游戏时,我尝试过的每件事都导致游戏视图控制器被重置。 有谁知道我如何在不重置游戏的情况下做到这一点? 这是一个 sprite 套件 和 swift iOS 应用在 xcode。

在您的原始视图控制器中创建一个变量:

var shouldReset = true

然后,当您执行回转时,将此添加到您的 prepareForSegue:

let vc = destination as! //Your view controller
vc.shouldReset = false

在您的viewDidLoad(或您重置数据的任何地方):

if shouldReset == true {
    //Reset
}

您可以显示基于弹出窗口的视图。您可以根据需要创建 .xib 并设计暂停视图。然后你可以在不重置任何东西的情况下继续游戏。

示例代码:

  // Set Pause Page
  var pauseView  = PauseView.loadFromNib() // need an extension

  @IBAction func Pause(sender: UIButton) {
    pauseView.btnResume.addTarget(self, action: #selector(resume(_:)), forControlEvents: .TouchUpInside)
    // set place on view
    view.addSubview(pauseView)
  }

  func resume(sender:UIButton) {
    pauseView.removeFromSuperview()
  }

我为您创建了一个演示:

可在 Github 获得完整演示: Get Source Code