在执行 segue 的控制器中关闭执行的 UIViewController

Dismiss performed UIViewController within controller that performed segue

我有 UINavigationControllerUICalendarViewController。在应用程序 运行 的某个时间,在 UICalendarViewController 内,我使用 UICalendarEventViewController 执行 segue。我一直参考 'UICalendarViewController' 使用

var calendarViewController: UICalendarViewController!

稍后我可以访问 UICalendarViewController,然后我需要关闭 UICalendarEventViewController。如何做到这一点?

我在 UICalendarViewController 里面创建了

var calendarEventViewController: UICalendarEventViewController?

但是当我尝试使用以下方式关闭它时:

calendarViewController.calendarEventViewController.dismissViewController(true, animated: true)

没用。

有时由于某种原因,我们没有我们期望的相同控制器实例。在我的例子中,我没有得到 UICalendarViewController 的相同实例。但是如果像我一样使用 UITabBarController 作为主导航,有一种方法可以做到这一点:

if let navigationController = viewControllersByIdentifier[PLContainerTabBarItemCalendar] as? UINavigationController {
        navigationController.popToRootViewControllerAnimated(true)
}

然后我有一个电流控制器,我可以用可见的结果来管理它们。