Я добавляю координаторы в свое приложение, где я использовал навигаторы.Я написал базовый протокол координатора, который выглядит следующим образом.
public protocol Coordinator: class {
/// The array containing any child Coordinators
var childCoordinators: [Coordinator] { get set }
func start()
func show()
}
public extension Coordinator {
/// Add a child coordinator to the parent
public func addChildCoordinator(_ childCoordinator: Coordinator) {
self.childCoordinators.append(childCoordinator)
}
/// Remove a child coordinator from the parent
public func removeChildCoordinator(_ childCoordinator: Coordinator) {
self.childCoordinators = self.childCoordinators.filter { $0 !== childCoordinator }
}
}
Теперь, что мне понравилось в моей реализации навигаторов, это то, что с помощью enum я мог перейти к представлению.Например, я мог бы сделать это:
navigator.navigate(to: .preferences)
Есть ли способ, я мог бы включить это в мой координатор?Я знаю, что не могу добавить перечисление к протоколу, чтобы классы, реализующие протокол, могли измениться.Также, как вы можете видеть, я уже добавил в протокол функцию show()
.Есть ли способ, которым я мог бы добавить enum или typealias или что-то в качестве параметра для этой функции?