Swift iOS:执行从 ViewController 中的一个实例到另一个 ViewController 中的实例的 Segue
Swift iOS: Perform a Segue from an Instance in a ViewController to another ViewController
首先要说的是,这个平台上的信息量这么大,全靠大家的帮助。非常感谢。
目前,我已经到了无法靠自己走得更远的地步。
这是我的问题:
我有一个嵌入在导航控制器中的 MainScreen ViewController。
从这个 MainScreen,我可以用 Segue 显示一个 GameViewController 来创建一个游戏场景。
在这个游戏场景中,我有一个按钮,当它被点击时,会显示一个弹出窗口并暂停游戏场景。
这个 Popup 包含两个按钮:
- 用于恢复游戏并使弹出窗口消失的按钮。
- 应该结束游戏场景并 return 到主屏幕的按钮。
这是我的问题。
我无法为结束按钮创建功能。我尝试过不同的 constellations 和 segues,但结果并不好。
我认为这里的困难在于,这个按钮在一个单独的 class 中。据我了解,这里的层次结构是:
游戏ViewController -> 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 class 中,我对位于 Popup 上的 EndButton 有一个操作,我想从中 return 到主屏幕:
@IBAction func showMainScreen(sender: AnyObject) {
// this does not work ...
self.performSegueWithIdentifier("showMainScreen", sender: nil)
}
您不能从 showInView 调用其他视图,您需要关闭 popOver 并从 GameScene 调用 mainView,为此您可以在 PausePopup 中创建一个竞争处理程序或将 popOver 的结果传递给 GameScene 的协议处理结果
首先要说的是,这个平台上的信息量这么大,全靠大家的帮助。非常感谢。
目前,我已经到了无法靠自己走得更远的地步。
这是我的问题:
我有一个嵌入在导航控制器中的 MainScreen ViewController。 从这个 MainScreen,我可以用 Segue 显示一个 GameViewController 来创建一个游戏场景。 在这个游戏场景中,我有一个按钮,当它被点击时,会显示一个弹出窗口并暂停游戏场景。
这个 Popup 包含两个按钮:
- 用于恢复游戏并使弹出窗口消失的按钮。
- 应该结束游戏场景并 return 到主屏幕的按钮。
这是我的问题。 我无法为结束按钮创建功能。我尝试过不同的 constellations 和 segues,但结果并不好。
我认为这里的困难在于,这个按钮在一个单独的 class 中。据我了解,这里的层次结构是:
游戏ViewController -> 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 class 中,我对位于 Popup 上的 EndButton 有一个操作,我想从中 return 到主屏幕:
@IBAction func showMainScreen(sender: AnyObject) {
// this does not work ...
self.performSegueWithIdentifier("showMainScreen", sender: nil)
}
您不能从 showInView 调用其他视图,您需要关闭 popOver 并从 GameScene 调用 mainView,为此您可以在 PausePopup 中创建一个竞争处理程序或将 popOver 的结果传递给 GameScene 的协议处理结果