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