Обновление: Я думаю, что достиг желаемого поведения другим подходом, но мне любопытно, почему я не могу отобразить разные navigationController
для masterController в UISplitViewController
и отобразить их.
Но мой подход помог моему коду стать более модульным. Я добавил в свой протокол Coordinator
следующую функцию
func stopChild<T: Coordinatable>(coordinator: T, callback: CoordinatorCallBack?)
и реализовал эту функцию следующим образом:
override func stopChild<T>(coordinator: T, callback: CoordinatorCallBack?) where T : Coordinatable {
childCoordinators = childCoordinators.filter({$0 !== coordinator})
// Calling parent to stop the child coordinator to roll back to the rootController
parentCoordinator?.stopChild(coordinator: self, callback: nil)
}
Откат помог мне создать экземпляр полного стека, который я хочу, не пытаясь чтобы добавить пользовательский модифицирующий код для splitViewController
, вместо этого я заменяю весь splitViewController
на тот, который соответствует модулю, с которым я работаю, что лучше для использования generi c. Поскольку при моем обратном вызове я могу отправить координатору root желаемый модуль, который будет заинтересован в следующем.