【问题标题】:Dismiss performed UIViewController within controller that performed segue关闭执行 segue 的控制器中执行的 UIViewController
【发布时间】:2015-01-29 11:50:43
【问题描述】:

我有UINavigationControllerUICalendarViewController。在应用程序运行的某个时间,在UICalendarViewController 内部,我使用UICalendarEventViewController 执行segue。我使用

继续引用“UICalendarViewController”
var calendarViewController: UICalendarViewController!

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

在我创建的UICalendarViewController里面

var calendarEventViewController: UICalendarEventViewController?

但是当我尝试使用以下方法将其关闭时:

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

它不起作用。

【问题讨论】:

  • 您是否将UICalendarEventViewController 推送到导航堆栈上?即,您是否使用“推送”转场?
  • 是的,Segue:Show (e.g. Push)
  • 在这种情况下,您应该通过 delegation 从您的 UICalendarViewController 内部调用解雇。您不需要在那里定义的引用。

标签: ios swift controller dismiss


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2019-01-21
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多