【问题标题】:How to Segue from a NavigationController to a TabBarController without taking the Navbar with it in Swift 5?如何在 Swift 5 中从 NavigationController 到 TabBarController 而不使用 Navbar?
【发布时间】:2020-03-22 15:22:32
【问题描述】:

我目前在做一个小的iOS项目,遇到了一个问题:

应用程序以Navigation View Controller 开头,用于登录和注册目的。在此 NavigationVC 中的最后一个视图控制器上完成注册后,我想重定向到主 Tab Bar Controller

请看这张图片。我希望它能说明我上面的意思:

问题是左侧和右侧之间缺少segue。 Xcode 中所有建议的 Segue 都不起作用。 modal Segue 没有选项,show Segue 带有 NavigationController 的 NavBar。

我希望你们对如何解决这个问题有想法。 提前感谢您的帮助。祝你有美好的一天!

【问题讨论】:

    标签: ios swift xcode viewcontroller


    【解决方案1】:

    您可以重新考虑您的导航架构。

    让我们将 tabBarController 的第一个视图控制器命名为“HomeViewController”

    其中一种实现方式是:

    • 始终在启动时加载您的 tabBarController。
    • 检查用户是否在 HomeViewController 的 viewDidLoad 方法中登录。
    • 如果用户未登录,则显示登录视图控制器(带有他自己的导航控制器)。

    您现在已经在 HomeViewController 上展示了登录过程。

    注册完成后,关闭 loginViewController。

    你现在回到 HomeViewController 并且注册完成了。

    此外,您可以使用 NotificationCenter 警告 HomeViewController 用户刚刚登录并执行任何初始工作。

    【讨论】:

      【解决方案2】:

      您可以通过以下方式简单地弹出:

      popToViewController:animated
      

      目标C:

      [self.navigationController popToRootViewControllerAnimated:YES]
      

      斯威夫特:

      self.navigationController?.dismiss(animated: true)
      

      【讨论】:

      • 感谢您的回答。我将第三行复制粘贴到 ViewDidLoad() 方法中的 TabBarController.swift 文件中,但它不起作用。我得到一个标签栏视图,顶部有导航视图
      猜你喜欢
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多