代码之家  ›  专栏  ›  技术社区  ›  PaFi

以编程方式创建UITabBarController时,只显示一个选项卡

  •  0
  • PaFi  · 技术社区  · 7 年前

    我有一个tabbar协调器,它包含一个uitabbar控制器。

    我想添加两个UINavigationController(CoinPage和Top/Flop),但选项卡中只显示一个。我想我已经把一切都安排好了,我尝试了一些其他的东西,但我无法让它工作。

    enter image description here

    这是我的代码:

    class TabBarCoordinator: Coordinator {
        var dependencys: DependencyManager
    
    
        let tabBarController: UITabBarController
        var tabCoordinators = [Tabs: Coordinator]()
        var navigationController: UINavigationController
    
        init(navigationController: UINavigationController, persistenceCentral: PersistenceCentral, dependencys: DependencyManager) {
            self.tabBarController = UITabBarController()
            self.navigationController = navigationController
            self.dependencys = dependencys
            var controllers: [UIViewController] = []
    
            tabCoordinators[.topFlop] = TopFlopCoordinator(navigationController: navigationController, dependencys: dependencys)
    
            tabCoordinators[.coinPage] = CoinPageCoordinator(dependencys: dependencys, navigationController: navigationController)
    
            let coinPageVC = tabCoordinators[.coinPage]!.navigationController
            coinPageVC.tabBarItem = UITabBarItem(title: "Coinpage", image: nil, tag: 0)
    
    
            let topFlopVC = tabCoordinators[.topFlop]!.navigationController
            topFlopVC.tabBarItem = UITabBarItem(title: "Top/Flop", image: nil, tag: 1)
    
    
            controllers.append(topFlopVC)
            controllers.append(coinPageVC)
    
            tabBarController.viewControllers = controllers
            tabBarController.tabBar.isTranslucent = false
    
            tabCoordinators[.topFlop]?.start()
            tabCoordinators[.coinPage]?.start()
        }
    
        func start() {
    
        }
    }
    

    我做了一些研究,例如,他以类似的方式设置选项卡: https://medium.com/@satindersingh71/uitabbarcontroller-programmatically-2a3df63607f1

    1 回复  |  直到 7 年前
        1
  •  0
  •   Shehata Gamal    7 年前

    这两行返回相同的对象

     let coinPageVC = tabCoordinators[.coinPage]!.navigationController
     let topFlopVC = tabCoordinators[.topFlop]!.navigationController
    

    因此,第一个的最后覆盖设置和它单独显示时,您必须确保创建两个单独的导航对象