iOS Swift Coordinator 模式和导航控制器的后退按钮

Ale*_*lov 6 mvvm ios swift rx-swift coordinator-pattern

我正在使用模式MVVM+Coordinator。我的每个控制器都是由coordinators. 但是,当点击Navigation控制器的后退按钮时,停止我的协调器的正确方法是什么?

class InStoreMainCoordinator: NavigationCoordinatorType, HasDisposeBag {

    let container: Container

    enum InStoreMainChildCoordinator: String {
        case menu = "Menu"
        case locations = "Locations"
    }

    var navigationController: UINavigationController
    var childCoordinators = [String: CoordinatorType]()

    init(navigationController: UINavigationController, container: Container) {
        self.navigationController = navigationController
        self.container = container
    }

    func start() {
        let inStoreMainViewModel = InStoreMainViewModel()
        let inStoreMainController = InStoreMainController()
        inStoreMainController.viewModel = inStoreMainViewModel

        navigationController.pushViewController(inStoreMainController, animated: true)
    }
}
Run Code Online (Sandbox Code Playgroud)

Mos*_*bah 1

我的方法是使用管理子协调器的根(父)协调器,因此当用户完成流程或点击后退按钮时,将调用根协调器中的委托方法,它可以清理子协调器并在需要时创建一个新协调器。