我正在尝试关闭视图控制器并同时显示另一个视图控制器。完成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)
})
答案 0 :(得分:2)
而不是在dismissViewControllerAnimated
上调用Level1Controller
,而是在呈现它的视图控制器上调用它。然后在完成块上,您可以以与您相同的方式呈现EndScene
。发生错误是因为事实上,自从您从窗口中删除Level1Controller
后,使用它来呈现另一个视图控制器是没有意义的。
窗口 - > ParentViewController(此处调用dismiss) - > Level1Controller
窗口 - > ParentViewController(完成后出现EndScene) - > EndScene
您可能必须通知Level1Controller
的父级已执行取消操作,您可以通过委托执行此操作。另一种选择(我没有测试)是将Level1Controller
中的解雇和presentingViewController
中的解雇。
self.presentingViewController.presentViewController...
在调用完成块时,不确定presentingViewController
是否为nil。