TabBarViewController 的导航栏覆盖来自 Navigation Controller 的导航栏

Navigation bar of TabBarViewController covers Navigation Bar from Navigation Controller

我试图在使用 UITabBarController 中的选项卡栏时使用 Navigation Controller 中的导航栏。如果我将导航控制器的根控制器设置为我的选项卡栏视图控制器,我会得到图像 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
}

发生这种情况是因为如果您有多个 navigationController 或 NavigationBar,则默认情况下初始导航栏将覆盖下一个 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 
}