【问题标题】:Navigation bar of TabBarViewController covers Navigation Bar from Navigation ControllerTabBarViewController 的导航栏覆盖来自导航控制器的导航栏
【发布时间】: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
}

【问题讨论】:

标签: ios swift swift4


【解决方案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 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多