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
}
我试图在使用 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
}