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

Ios 在执行segue的控制器中关闭执行的UIViewController,ios,swift,controller,dismiss,Ios,Swift,Controller,Dismiss,我有根UICalendarViewController的UINavigationController。在应用程序运行时,我在UICalendarViewController中使用UICalendarEventViewController执行segue。我使用 var calendarViewController: UICalendarViewController! 稍后,我可以访问UICalendarViewController,然后需要关闭UICalendarEventViewControl

我有根UICalendarViewController的UINavigationController。在应用程序运行时,我在UICalendarViewController中使用UICalendarEventViewController执行segue。我使用

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)
}

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

是否将UICalendarEventViewController推到导航堆栈上?例如,您是否使用“推送”segue?是,segue:Show例如,push在这种情况下,您应该通过从UICalendarViewController内部呼叫解雇。您不需要在那里定义的引用。