【问题标题】:Having Trouble Navigating Between UIViewControllers在 UIViewController 之间导航时遇到问题
【发布时间】:2016-01-20 16:37:43
【问题描述】:

首先让我说我想在没有故事板的情况下完成所有这些。我的情况如下:我有一个用户的登录页面。在登录页面上,用户可以登录,或被带到注册页面。当用户注册成功时,他们将被带到主菜单。但是,如果我从主菜单中单击注销,则关闭主菜单视图控制器会将我带回注册页面(这是有道理的)。

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

有什么方法可以让我解除 2 个视图控制器吗?或者如果它是从某个视图控制器呈现的,则可能在视图控制器上运行一行代码?

谢谢!

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

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

【问题讨论】:

  • 一种方法:将所有 viewControllers 放入一个 navigationViewController,然后使用 navigationViewController.viewControllers 和 navigationViewController.popToViewController() 来管理你的堆栈:)
  • @Breek 我可以弹出两个控制器吗?因为我基本上需要做的是备份 2,而不仅仅是 1。
  • 是的,如果您能够访问您的 loginViewController 实例,那么您可以执行 navigationViewController.popToViewController(loginViewController, animated: true)。否则,您可以迭代您的 navigationViewController.viewControllers 以获取您的 loginViewController
  • 这很有意义,我今天会尝试一下。谢谢!

标签: ios swift uiview uiviewcontroller


【解决方案1】:

如果您使用的是导航控制器,则可以获取viewControllers 数组属性,构建一个不包含您要关闭的视图控制器的新数组,然后使用新数组设置该属性。

【讨论】:

  • 我现在拥有的所有控制器都是 ViewControllers。切换到导航控制器有意义吗?
  • 导航控制器适用于您想要前后导航的一堆屏幕。用户登录后,我只需将 window.rootViewController 重置为 mainVC。当他们注销时,我会将 root 重置为 loginVC。如果你需要一个堆栈,Main 或 Login 可能位于 NavVC 中,但我认为 login 和 main 不应该在同一个 NavVC 中。
  • 这很有意义。重置 rootViewController 是否有助于改变自身的堆栈?
  • 根是单个 VC 而不是堆栈。它可能是一个拥有堆栈的 NavVC。任何 VC 也可以展示一个其他 VC。
【解决方案2】:

无需切换到导航控制器。

如果你展示的是视图控制器,那么试试这个:

对于 Objective-C:

[[[self presentingViewController] presentingViewController]  dismissViewControllerAnimated:YES completion:nil];

对于 Swift:

self.presentingViewController!.presentingViewController!.dismissViewControllerAnimated(true, completion: {})

希望它对你有用。

【讨论】:

  • 这似乎在objective-c中。你知道 swift 等价物吗?
  • @DMop 刚刚编辑了答案,你可以在那里快速查看
  • 看起来很棒!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 2018-09-01
  • 2018-10-05
相关资源
最近更新 更多