如何closures当前的ViewController并转到Swift中的另一个视图

我是Swift的新手,我想知道如何closures当前视图控制器并转到另一个视图。

我的故事板如下所示:MainMenuView – > GameViewController – > GameOverView。 我想closuresGameViewController去GameOverView,而不是MainMenuView。

我在我的MainMenuView中使用下面的代码:

@IBAction func StartButton(sender: UIButton) { let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("GameViewController") as! GameViewController self.presentViewController(nextViewController, animated:true, completion:nil) restGame() } 

在GameViewController中,我使用了这个代码,但是并没有closuresGameViewController。

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("GameOverView") as! GameOverView self.presentViewController(nextViewController, animated:true, completion:nil) 

这是我的GameOverView代码:

 class GameOverView: UIViewController{ // save the presenting ViewController var presentingViewController :UIViewController! = self.presentViewController override func viewDidLoad() { super.viewDidLoad() } @IBAction func ReplayButton(sender: UIButton) { restGame() didPressClose() } @IBAction func ReturnMainMenu(sender: UIButton) { Data.GameStarted = 1 self.dismissViewControllerAnimated(false) { // go back to MainMenuView as the eyes of the user self.presentingViewController.dismissViewControllerAnimated(false, completion: nil); } /* let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("MainScene") as! MainScene self.presentViewController(nextViewController, animated:true, completion:nil)*/ } func restGame(){ Data.score = 0 Data.GameHolder = 3 Data.GameStarted = 1 Data.PlayerLife = 3.0 Data.BonusHolder = 30 Data.BonusTimer = 0 } func didPressClose() { self.self.dismissViewControllerAnimated(true, completion:nil) } override func shouldAutorotate() -> Bool { return false } deinit{ print("GameOverView is being deInitialized."); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Release any cached data, images, etc that aren't in use. } override func prefersStatusBarHidden() -> Bool { return true } } 

有什么build议么?

你可以做的是让GameOverView呈现出来,毕竟当你呈现GameOverView在层次结构下面时,然后在你的GameOverView运行下面的代码来closures你想closuresGameOverView ,就像下面的方式一样:

 @IBAction func ReturnMainMenu(sender: UIButton) { // save the presenting ViewController var presentingViewController: UIViewController! = self.presentingViewController self.dismissViewControllerAnimated(false) { // go back to MainMenuView as the eyes of the user presentingViewController.dismissViewControllerAnimated(false, completion: nil) } } 

当你想closuresGameOverView时需要调用上面的代码。

我希望这可以帮助你。