以编程方式在 loginVC 之后嵌入自定义选项卡栏控制器

Embed custom tab bar controller after loginVC programmatically

我在没有故事板的情况下工作。 成功登录后,我想在我的 viewController 中添加一个 tabBar。 我创建了另一个 viewController 名为 tabBar 控制器的代码:

class TabBarController: UITabBarController,UITabBarControllerDelegate {
override func viewDidLoad() {
    super.viewDidLoad()
    self.delegate = self
}

override func viewWillAppear(_ animated: Bool) {
    // Create Tab one
    let tabOne = Home()
    let tabOneBarItem = UITabBarItem(title: "Collection", image: #imageLiteral(resourceName: "matchTabIcon"), selectedImage: #imageLiteral(resourceName: "matchTabIconSelected"))
    tabOne.tabBarItem = tabOneBarItem
    // Create Tab two
    let tabTwo = ScoutingVC()
    let tabTwoBarItem2 = UITabBarItem(title: "Scouting", image: #imageLiteral(resourceName: "scouting"), selectedImage:#imageLiteral(resourceName: "scoutingSelected"))
    tabTwo.tabBarItem = tabTwoBarItem2
    self.viewControllers = [tabOne, tabTwo]
}
// UITabBarControllerDelegate method
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    print("Selected \(viewController.title!)")
}

}

将此添加到我的所有 VC 中的正确方法是什么?

我试过了

self.vc.addSubView(tabBarController)

并在第一个 VC(索引:0)中创建一个 func(),但要么 tabBar 不存在,要么即使存在,也不会在 viewController 之间切换.

func showTabBarController() {
    // Create Tab one
    let home = Home()
    let homeTabBarItem = UITabBarItem(title: "Collection", image: #imageLiteral(resourceName: "matchTabIcon"), selectedImage: #imageLiteral(resourceName: "matchTabIconSelected"))
    home.tabBarItem = homeTabBarItem
    let navHome = UINavigationController.init(rootViewController: home)
    // Create Tab two
    let scouting = ScoutingVC()
    let scoutingTabBarItem = UITabBarItem(title: "Scouting", image: #imageLiteral(resourceName: "scouting"), selectedImage: #imageLiteral(resourceName: "scoutingSelected"))
    scouting.tabBarItem = scoutingTabBarItem
    let navScouting = UINavigationController.init(rootViewController: scouting)
    //showTabBar
    tabBarCnt.viewControllers = [navHome, navScouting]
    self.view.addSubview(tabBarCnt.tabBar)
}

而不是使用 self.vc.addSubView(tabBarController) 使用 present(TabBarController(), animated: false, completion: nil)