【发布时间】:2020-05-04 20:42:47
【问题描述】:
我正在实施 协调器模式 来处理我的应用中的导航。理论上,当用户选择不同的类别时,我想设置 splitViewController 以用新的类别替换该类别的现有 navigationController。
当应用程序启动时,协调器按预期运行,并且当我弹出或推送启动时实现的相同 navigationController 时也可以正常工作,我唯一的问题是当我尝试替换整个 navigationController 时 splitviewcontroller .
问题:添加新的 navigationController 不会显示给用户
这是我的实现。
class Coordinator: Navigable, DataCommunicator{
//MARK: - Navigable Conformable
typealias UIController = SplitController
var viewController: UIController
var childCoordinators: [Coordinatable] = []
//MARK: - Root Custom setup
weak var parentCoordinator: RootCoordinator?
//MARK: - Init
init(viewController: UIController) {
self.viewController = viewController
}
func start() {
let categoryNavigationController = CategoryNavigationController()
let categoryNavigationCoordinator = CategoryNavigationCoordinator(viewController: noteNavigationController)
categoryNavigationCoordinator.start()
childCoordinators.append(categoryNavigationCoordinator)
categoryNavigationController.coordinator = self
viewController.viewControllers = [categoryNavigationController]
}
func startSearchCategory() {
childCoordinators.removeLast()
viewController.navigationController?.popToRootViewController(animated: false)
viewController.viewControllers.removeLast()
let searchNavigationController = SearchNavigationController()
let searchCoordinator = SearchNavigationCoordinator(viewController:searchNavigationController)
searchCoordinator.start()
childCoordinators.append(searchCoordinator)
searchNavigationController.coordinator = self
searchCoordinator.parentCoordinator = self
viewController.viewControllers = [searchNavigationController]
}
}
【问题讨论】:
标签: swift uinavigationcontroller uisplitviewcontroller coordinator-pattern