Swift:关闭ViewController并实例化另一个ViewController

Swift: dismissViewController and Instantiate another ViewController

我正在尝试关闭一个视图控制器并同时显示另一个视图控制器。当 Level1Controller() 完成并调用 self.dismissViewController() 时,我希望它将我带到另一个名为 EndScene().

的视图控制器

这是最接近我的代码。

   self.dismissViewControllerAnimated(true, completion: {() -> Void in
       let storyboard = UIStoryboard(name: "Main", bundle: nil)
       let nextViewConroller = storyboard.instantiateViewControllerWithIdentifier("endscene")
       self.presentViewController(nextViewConroller, animated: false, completion: nil)
   })

不是在 Level1Controller 上调用 dismissViewControllerAnimated,而是在呈现它的视图控制器上调用它。然后在完成块上,您可以按照与您相同的方式呈现 EndScene 。发生错误是因为事实上,由于您从 window 中删除了 Level1Controller,因此使用它来呈现另一个视图控制器没有任何意义。

Window -> ParentViewController(此处调用 dismiss) -> Level1Controller

Window -> ParentViewController(完成时显示 EndScene) -> EndScene

您可能必须通知 Level1Controller 的父级已执行取消操作,您可以通过委托来完成。另一种选择(我没有测试)是将解雇保留在 Level1Controller 中并从 presentingViewController 中呈现。

self.presentingViewController.presentViewController...

不确定在调用完成块时 presentingViewController 是否为 nil。