呈现 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:)。
我正在处理一个项目,该项目有两组不同的选项卡,这些选项卡根据特定条件显示。我的问题是如何通过 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:)。