我重写了TabBarController:
//
// TabBarController.swift
//
//
// Created by Coel on 2019/7/4.
//
import UIKit
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let TrashListVC = TrashListViewController()
let SearchVC = SearchViewController()
let SettingsVC = SettingsViewController()
TrashListVC.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 0)
SearchVC.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 1)
SettingsVC.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 2)
let tabBarList = [SearchVC, TrashListVC, SettingsVC]
viewControllers = tabBarList.map {
UINavigationController(rootViewController: $0)
}
// Do any additional setup after loading the view.
}
}
我在AppDelegate中称其为
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = UINavigationController(rootViewController: TabBarController())
window?.makeKeyAndVisible()
return true
}
}
此结果是一个双导航栏,如下所示:
(对不起,中文)
我尝试在TabBarController.swift中添加self.navigationController?.isNavigationBarHidden = true
,但不起作用。
答案 0 :(得分:2)
你在说
Dashboard
因此,您要将导航控制器包装在标签栏控制器周围。
但是你在说:
window?.rootViewController =
UINavigationController(rootViewController: TabBarController())
因此,您正在将导航控制器包装在选项卡栏控制器的每个子控件中。
因此,对于选项卡栏控制器的每个子控件,它周围都有两个导航控制器,每次在我引用的代码中看到“ UINavigationController”一词时,就会出现一次。
这就是为什么您看到两个导航栏。您在导航控制器内部有一个导航控制器。
该体系结构是不连贯和禁止的。您不得在导航控制器内任何深度放置导航控制器。您需要重新考虑整个架构。
答案 1 :(得分:0)
您有2个导航,一个用于主tabBar,另一个用于每个子vc,以将它们都隐藏起来
1-
let nav = UINavigationController(rootViewController: TabBarController())
nav.isNavigationBarHidden = true
window?.rootViewController = nav
或仅
window?.rootViewController = TabBarController()
2-
viewControllers = tabBarList.map { item in
let nav = UINavigationController(rootViewController:item)
nav.isNavigationBarHidden = true
return nav
}