将视图控制器关闭到特定视图控制器

时间:2017-07-13 08:21:48

标签: ios swift

我的视图控制器 登录 - >主菜单 - > A - > B - > C - > d

如何调度所有视图控制器并返回主菜单

对于从我的视图控制器注销,我正在执行以下操作,返回登录

@SlingFilter(
    label = "Filter Label",
    description = "implementation of a Sling Filter",
    generateComponent = true, 
    generateService = true, 
    order = 0, 
    scope = SlingFilterScope.REQUEST) // REQUEST, INCLUDE, FORWARD, ERROR, COMPONENT (REQUEST, INCLUDE, COMPONENT)
    public class MySlingFilter implements Filter {
       ////// Implementation
    }

现在我正在做的是这个

func logout{

    self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
 }

6 个答案:

答案 0 :(得分:5)

如果你的MainMenu VC总是在你的Login VC之后出现,你可以简单地使用相同的方法:

To MainMenu:

self.view.window!.rootViewController?.presentedViewController?.dismissViewControllerAnimated(true, completion: nil)

答案 1 :(得分:0)

使用展开segue 而不是使用RootViewController。 使用展开,您可以返回任何ViewController。 DismissViewController总是从NavigationController发送控制器。

答案 2 :(得分:0)

您可以使用UINavigationController来推送/弹出视图控制器,而不是呈现/解除。这样你可以使用UINavigationController popToViewController(_:animated:),它可以弹出到导航堆栈中的任何视图控制器。

答案 3 :(得分:0)

如果MainMenu不是你的rootViewController,你可以使用Unwind Segue。看看这篇文章,希望它会有所帮助。 Unwind Segue with Swift

答案 4 :(得分:0)

这对我有用,

self.view.window!.rootViewController?.presentedViewController?.dismiss(动画:true,完成:nil)

答案 5 :(得分:0)

Swift 5

这对我有用

var presentingViewController = PresentingViewController()
self.dismiss(animated: false) {
    presentingViewController.dismiss(animated: false, completion: nil)
}