在 Swift 5 中,如何在不带 Navbar 的情况下从 NavigationController 转到 TabBarController?

How to Segue from a NavigationController to a TabBarController without taking the Navbar with it in Swift 5?

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

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

查看此图片。我希望它能说明我上面的意思:

问题是左侧和右侧之间缺少转场。来自 Xcode 的所有提议的 Segues 都不起作用。 modal Segue 不是选项,show Segue 带有 NavigationController 的 NavBar。

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

您可以通过以下方式简单地返回:

popToViewController:animated

目标C:

[self.navigationController popToRootViewControllerAnimated:YES]

Swift:

self.navigationController?.dismiss(animated: true)

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

让我们命名您的 tabBarController 的第一个视图控制器"HomeViewController"

实现方式之一是:

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

您现在已经在 HomeViewController 之上呈现了登录过程。

注册完成后,关闭 loginViewController。

您现在返回到 HomeViewController,注册完成。

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