我正在使用带有协调器模式的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]
}
标签栏问题:
- isTranslucent不会从TabbarController隐藏navBar
- 屏幕为黑色
- 未显示tabBarItems的视图,但是您仍然可以点按它们,屏幕会发生变化
- 第二个vc只是黑屏
有什么想法可以解决我的TabBarCoordinator类的问题吗?预先谢谢你