呈现 UITabBarController 的最佳实践

Best practice for presenting UITabBarControllers

我正在处理一个项目,该项目有两组不同的选项卡,这些选项卡根据特定条件显示。我的问题是如何通过 UITabBarControllers 最好地呈现两组不同的选项卡。

现在,该应用程序打算使用默认的 UITabBarController 启动,但是当我想切换时,我对如何最好地呈现第二个 UITabBarController 并完全从内存堆栈中获取第一个 UITabBarController 感到困惑。并且,反之亦然。切换回第一个 UITabBarController 会不会一样?

这是目前用于从第一个切换到第二个的代码。

let secondaryTabBarController = SecondaryTabBarController()
let secondaryTabs = UINavigationController(rootViewController: secondaryTabBarController)
UIApplication.shared.keyWindow?.rootViewController = secondaryTabs

为了解决您对内存的担忧,您建议的方法在这方面完全没问题,并且本身不会导致任何内存泄漏。

是的,如果您想切换回第一个标签栏控制器,您可以使用相同的方法,为您的第一个标签栏控制器创建一个新实例并将其设置为 window 的根目录视图控制器。

您可以使用 UIView.transition(with:duration:options:animations:completion:) 为过渡设置动画,它有一些内置的过渡动画。

或者,如果您只想更改选项卡,或者想要保留选择,您可以在 UITabBarController 上使用 setViewControllers(viewControllers:animated:)。