Swift:dismissViewController并实例化另一个ViewController

时间:2015-12-23 23:55:55

标签: ios swift uiviewcontroller instantiation dismiss

我正在尝试关闭视图控制器并同时显示另一个视图控制器。完成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)
   })

1 个答案:

答案 0 :(得分:2)

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

窗口 - > ParentViewController(此处调用dismiss) - > Level1Controller

窗口 - > ParentViewController(完成后出现EndScene) - > EndScene

您可能必须通知Level1Controller的父级已执行取消操作,您可以通过委托执行此操作。另一种选择(我没有测试)是将Level1Controller中的解雇和presentingViewController中的解雇。

self.presentingViewController.presentViewController...

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