Ios 在UIViewController之间导航时遇到问题

Ios 在UIViewController之间导航时遇到问题,ios,swift,uiview,uiviewcontroller,Ios,Swift,Uiview,Uiviewcontroller,让我首先说,我想在没有故事板的情况下完成所有这些。我的情况如下:我有一个用户登录页面。在登录页面上,用户可以登录,也可以被带到注册页面。当用户成功注册时,他们将进入主菜单。但是,如果我在主菜单中单击“注销”,取消主菜单viewcontroller会将我带回“注册”页面(这很有意义) 问题是我需要将用户带到登录页面。但是,我无法显示原始登录页,因为我收到错误“警告:尝试显示已显示的内容” 有什么方法可以让我取消2个视图控制器吗?或者在视图控制器上运行一行代码,如果它是从某个视图控制器显示的 谢谢大

让我首先说,我想在没有故事板的情况下完成所有这些。我的情况如下:我有一个用户登录页面。在登录页面上,用户可以登录,也可以被带到注册页面。当用户成功注册时,他们将进入主菜单。但是,如果我在主菜单中单击“注销”,取消主菜单viewcontroller会将我带回“注册”页面(这很有意义)

问题是我需要将用户带到登录页面。但是,我无法显示原始登录页,因为我收到错误“警告:尝试显示已显示的内容”

有什么方法可以让我取消2个视图控制器吗?或者在视图控制器上运行一行代码,如果它是从某个视图控制器显示的

谢谢大家!

这是我在主菜单中使用的解决方案,它很有效

 if(self.presentingViewController == registerPage){
            registerPage.dismissViewControllerAnimated(true, completion: nil)
    }
        self.dismissViewControllerAnimated(true, completion: nil)

如果您使用的是导航控制器,则可以获取
viewControllers
数组属性,在不使用要取消的viewControllers的情况下构建新数组,并使用新数组设置属性。

无需切换到导航控制器

如果要演示view controller,请尝试以下操作:

对于目标C:

[[[self presentingViewController] presentingViewController]  dismissViewControllerAnimated:YES completion:nil];
self.presentingViewController!.presentingViewController!.dismissViewControllerAnimated(true, completion: {})
对于Swift:

[[[self presentingViewController] presentingViewController]  dismissViewControllerAnimated:YES completion:nil];
self.presentingViewController!.presentingViewController!.dismissViewControllerAnimated(true, completion: {})

希望它能对您起作用。

一种方法是:将所有ViewController放入navigationViewController,然后使用navigationViewController.ViewController和navigationViewController.popToViewController()管理堆栈:)@Breek我能弹出两个控制器吗?因为我基本上需要做的是备份2,而不仅仅是备份1。是的,如果您能够访问loginViewController实例,那么您可以执行navigationViewController.popToViewController(loginViewController,动画:true)。否则,您可以在navigationViewController.viewControllers中进行迭代,以获得有意义的LoginViewController。今天我将试用它。非常感谢。我现在拥有的所有控制器都是ViewController。切换到导航控制器有意义吗?导航控制器用于一堆屏幕,您需要前后导航。一旦用户登录,我只需将window.rootViewController重置为mainVC。当他们注销时,我会将root重置为loginVC。如果你需要一个堆栈,Main或Login可能位于一个NavVC中,但是我认为Login和Main不应该位于同一个NavVC中。这很有意义。重置rootViewController是否有助于改变堆栈本身?根是单个VC而不是堆栈。它可能是一个持有堆栈的NavVC。任何一个VC也可以是一个单独的VC。这似乎是在objective-c中。你知道swift的等价物吗?@DMop刚刚编辑了答案,你可以在那里看到swift,看起来很棒!谢谢!