在MVVM-C中使用TabBarController,标签栏的协调器

我正在使用带有协调器模式的MVVM进行导航。导航是通过pushViewController进行的。 Tab Bar Controller在TabBarCoordinator类中创建。

class TabBarCoordinator: NSObject,BaseCoordinator {


        var rootViewController: UIViewController {
            return tabBarController
        }

        var tabBarController: UITabBarController

        var window: UIWindow
        private let appDependency: AppDependency
        var navigationController: NavigationController
        private let navigationObserver: NavigationObserver

        var childCoordinators: [BaseCoordinator] = []

        var onDidFinish: (() -> Void)?

        var topController: UIViewController {
          if let lastChild = topCoordinator {
            return lastChild.topController
          }
          var controller: UIViewController = navigationController
          while let presentedController = controller.presentedViewController {
            controller = presentedController
          }
          return controller
        }

        func start() {

            let homeCoordinator = HomeCoordinator(navigationObserver: navigationObserver,navigationController: navigationController,appDependency: appDependency)
            add(child: homeCoordinator)
            homeCoordinator.start()

            let ordersListCoordinator = OrdersListCoordinator(navigationController: navigationController,navigationObserver: navigationObserver,appDependency: appDependency,filterStatus: nil)
            add(child: ordersListCoordinator)
            ordersListCoordinator.start()

            tabBarController.navigationController?.navigationBar.isTranslucent = true

            let homeVC = homeCoordinator.topController
            homeVC.tabBarItem = UITabBarItem(title: "home",image: nil,selectedImage: nil)

            let ordersListVC = ordersListCoordinator.topController
            ordersListVC.tabBarItem = UITabBarItem(title: "orders",selectedImage: nil)

            let controllers = [homeVC,ordersListVC]

            tabBarController.viewControllers = controllers.map { UINavigationController(rootViewController: $0) }

            window.rootViewController = tabBarController
            window.makeKeyAndVisible()

        }

        required init(window: UIWindow,navigationObserver: NavigationObserver,navigationController: NavigationController,appDependency: AppDependency
        ) {

            tabBarController = UITabBarController()
            self.window = window
          self.navigationController = navigationController
          self.navigationObserver = navigationObserver
          self.appDependency = appDependency
        }
    }

以下是func start()的HomeCoordinator类的代码:

func start() {
        guard let user = appDependency.userDataStore.authorizedUserInfo?.user else { return }
        let viewModel = HomeViewModel(user: user)
        viewModel.delegate = self
        let homeViewController = HomeViewController(viewModel: viewModel)
        viewController = homeViewController
        navigationController.viewControllers = [homeViewController]
    }

Tab bar Screenshot

标签栏问题:

  • isTranslucent不会从TabbarController隐藏navBar
  • 屏幕为黑色
  • 未显示tabBarItems的视图,但是您仍然可以点按它们,屏幕会发生变化
  • 第二个vc只是黑屏

有什么想法可以解决我的TabBarCoordinator类的问题吗?预先谢谢你

holylai 回答:在MVVM-C中使用TabBarController,标签栏的协调器

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2922029.html

大家都在问