TabBarViewController 的导航栏覆盖来自导航控制器的导航栏
Posted
技术标签:
【中文标题】TabBarViewController 的导航栏覆盖来自导航控制器的导航栏【英文标题】:Navigation bar of TabBarViewController covers Navigation Bar from Navigation Controller 【发布时间】:2018-12-08 09:09:10 【问题描述】:我正在尝试使用导航控制器中的导航栏,同时使用 UITabBarController 中的标签栏。如果我将导航控制器的根控制器设置为我的标签栏视图控制器,我会得到图像 2。如果我将根控制器设置为我的主视图控制器(即标签栏项目 0),我会得到图片 1。
所需的导航栏
想要的标签栏
我没有使用情节提要,现在我的层次结构如下:
NavigationController->UITabBarController->ViewControllers
AppDelegate.swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: TabViewController())
return true
【问题讨论】:
这可能会有所帮助***.com/questions/31548909/… 【参考方案1】:发生这种情况是因为如果您有多个 navigationController 或 NavigationBar,则默认情况下初始导航栏将覆盖下一个导航栏。您可以通过将初始navigationController的导航栏设置为隐藏来达到预期的效果
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let navigation = UINavigationController(rootViewController: TabViewController())
navigation.setNavigationBarHidden(true, animated: false)
window?.rootViewController = navigation
return true
【讨论】:
以上是关于TabBarViewController 的导航栏覆盖来自导航控制器的导航栏的主要内容,如果未能解决你的问题,请参考以下文章
如何创建以 TabBarViewController 为根的导航堆栈?